Comment écrire cela sans goto:Transférer une variable à un point earier sans 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;
Pour obtenir cet écho:
START of LEFT
CONTENT LEFT: 5
END of LEFT
START of CENTER
END of CENTER
Exigences:
1. Je ne suis pas autorisé à changer la commande (CORE (echo $ a), et 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. de sortie doit être générée via ob_get_contents();
Mais je suis autorisé à écrire n'importe quel code dans des endroits.
// Solvings ob_get_contents(); Aide seulement si vous voulez remplacer quelques lignes dans la sortie HTML CODE, mais ne peut pas changer une valeur de la variable, pour changer l'ALGORHYTM (dépend de la valeur var), qui génère le code HTML aléatoire.
En outre, Comme je l'ai vérifié mon code, je comprends que mon code, même avec GOTO étiquettes déclaration, NE PAS va changer le contenu output1 $?. Comment faire ça? Est le seul moyen est de recache le $ output1 de son début. Ou peut-être que je suis capable de le faire d'autres façons?
Ce code me rend très, très triste. –
moi aussi. Je suis un peu confus, vous semblez avoir posé les mêmes questions il y a un instant. Pas si cool. – moritz
Pas vraiment la même, similaire, pas la même, l'autre était source entière inc. motif de conception connexe. Celui-ci est spécifié dans un sujet - transfert de variable sans goto. – KestutisIT