D'accord, je semble avoir une idée fausse avec la portée variable avec PHP, pardonnez mon manque de sujet car je viens d'un Java, C# de fond. Penser que je pourrais rendre les variables accessibles aux fonctions ou si les déclarations simplement en le plaçant à l'extérieur. Ci-dessous un extrait de ce que je suis en train d'accomplir:Variable Problème de portée avec les instructions if (PHP)
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 valeurs variables $m
accessibles en dehors du cas des déclarations de son pour la variable $m
utilisée dans l'instruction $sql_array[]
. En C# je voudrais simplement déclarer une variable en dehors de la boucle foreach et être capable de l'utiliser. Après quelques lectures sur le sujet, j'ai trouvé que l'utilisation des mots clés globaux ou GLOBALS ne fonctionnerait que si ma variable de portée globale est assignée à la valeur avant la 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 déclarations if et tout le monde déconseille de les utiliser. Maintenant, existe-t-il une meilleure méthode pour rendre $m
accessible à l'instruction $sql_array[]
?
Qu'est-ce que cela signifie: 'id * sera * coming?' –
La source de l'ID serait ... –
@ Aurel300 merci mr. Traducteur. Pourriez-vous indiquer la valeur réelle de $ m_id dans le runtime? –