gotoなしでこれを書く方法:
ob_start();
$a = 0;
echo "START of LEFT<br />";
begin:
if($a > 0) {
echo "CONTENT LEFT: $a<BR />";
<VERY DIFFICULT ALGORHITM>
goto end;
}
<... ALL THE REST CODE OF LEFT ...>
echo "END of LEFT<br /><br />";
$output1 = ob_get_contents();
ob_end_clean();
ob_start();
echo "START of CENTER<br />";
$a = 5; goto begin;
end:
<... ALL THE REST CODE OF CENTER ...>
echo "END of CENTER<br />";
$output2 = ob_get_contents();
ob_end_clean();
// print it
echo $output1.$output2;
このエコーを取得するには:
START of LEFT
CONTENT LEFT: 5
END of LEFT
START of CENTER
END of CENTER
要件:
1.順序を変更することはできません (CORE( echo $a )、および PLUGIN( $a=5 )):
ob_start();
$a = 0;
<ANY CODE>
echo $a;
$output1 = ob_get_contents();
ob_end_clean();
ob_start();
<ANY CODE>
$a = rand(0,10);
$output2 = ob_get_contents();
ob_end_clean();
2. ob_get_contents() を介して出力を生成する必要があります。
しかし、私は場所に任意のコードを書くことが許されています.
// 解決 ob_get_contents(); 出力 HTML コードの数行を置き換えたいが variable の値を変更できない場合にのみ役立ち、ランダムな HTML コードを生成する ALGORHYTM (var 値に依存) を変更します。
また、コードを確認したところ、GOTO ラベル ステートメントを使用しても、コードが $output1 の内容を変更しないことがわかりました。どうやってするか?唯一の方法は、最初から $output1 を再キャッシュすることです。それとも、他の方法でこれを行うことができますか?