Variable Проблема с областью действия с операторами if (PHP)

Хорошо, у меня, кажется, неправильное представление об области видимости переменных в 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 [] ?

16
задан Neels 29 March 2017 в 22:07
поделиться