Problème de portée variable avec les instructions if (PHP)
Bien, il me semble avoir un malentendu avec la portée des variables en PHP, pardonnez mon manque de l'objet que je viens de Java, C# arrière-plan. En pensant que je pourrait faire de variables accessibles à des fonctions ou si les déclarations sont tout simplement en le plaçant à l'extérieur. Ci-dessous un extrait de ce que je suis en train de réaliser:
foreach ($nm as $row=>$im) {
$itm_name = $im;
$lnk = $lnk_cty[$row];
if($mode == 'addMenu') {
$m = $m_id; //id will be coming from fresh insert of menu_name
} else {
$m = $_POST['mnu_add'][$row];
echo "MENU_ID: ".$m;
}
if($mode == 'addCat') {
$m = $c_id; //id will be coming from fresh insert of cat_name
} else {
$m = $_POST['cat_add'][$row];
}
//used for testing purposes
echo "item name: ".$itm_name ."<br />";
echo "lnk: ".$lnk ."<br />";
echo "m: ".$m ."<br />"; //$m is empty here, because its a new declaration as oppose to accessing $m value from if statement
$display_fields .= "<li>".$itm_name." ".$item."</li>";
$sql_array[] = '("' . $itm_name . '", "' . $lnk . '", ' . $m . ')'; //Add a new entry to the queue
}
Maintenant, ce que je suis en train de faire est de rendre les $m
les valeurs d'une variable accessible à l'extérieur de la si les déclarations de son dans le $m
variable utilisée dans le $sql_array[]
déclaration. En C#, je voudrais simplement déclarer une variable en dehors de la boucle foreach et être capable de l'utiliser. Après avoir fait un peu de lecture sur le sujet, j'ai trouvé que l'utilisation de la global ou GLOBALS mots-clés ne fonctionne que si ma portée globale variable est d'assigner la valeur avant le foreach, et déclarant global $m
pour obtenir cette valeur dans la boucle. Mais avec mon code actuel $m
est d'une portée locale dans les instructions if et tout le monde déconseille de les utiliser. Maintenant, est-il une meilleure méthode de faire $m
accessible à l' $sql_array[]
déclaration?
source d'informationauteur Andre | 2010-11-05
Vous devez vous connecter pour publier un commentaire.
If
blocs d'instruction n'ont pas leur propre champ d'application. Toutes les données que vous assignez à$m
doit être vide pour commencer. Essayez de débogage des choses comme votre$_POST
variables. Aussi, où est$m_id
être défini? C'est peut-être vide.PHP ne ont portée à l'intérieur des fonctions, des méthodes de la classe et la comme. Mais
if
états ne disposent pas de leur propre champ d'application. Par exemple, le code suivant devrait echoHi there!
:Ont une lecture dans le manuel.
ici la variable $id_struct n'est pas défini, que dois-je faire?
Il est vrai que si les états n'ont PAS de portée , mais Il semble qu'il y a un problème avec la Portée (morceau de code entre accolades)..dans l'extrait de code ci-dessous le résultat attendu est : $z[0] = 0, $z[1] = 1, mais le résultat obtenu est de $z[0] = 100; $z[1] n'est pas défini. Le PHP est utilisé par Apache Amis de distribution