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