Хорошо, у меня, кажется, неправильное представление об области видимости переменных в PHP, простите, что я не владею этой темой, так как я пришел из Java, C #. Думая, что я могу сделать переменные доступными для функций или операторов if, просто поместив их вне их. Ниже приведен фрагмент того, что я пытаюсь выполнить:
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
}
Теперь, что я m пытается сделать, это сделать значения переменной $ m
доступными вне операторов if, которые находятся внутри переменной $ m
, используемой в операторе $ sql_array []
. В C # я бы просто объявил переменную вне цикла foreach и смог бы ее использовать. После некоторого чтения по этому вопросу я обнаружил, что использование ключевых слов global или GLOBALS будет работать, только если моя глобальная переменная области видимости присвоит значение перед foreach и объявит global $ m
для получения этого значения в цикле. . Но с моим текущим кодом $ m
имеет локальную область видимости внутри операторов if, и все не одобряют их использование. Сейчас, есть ли лучший способ сделать $ m
доступным для оператора $ sql_array []
?