Tamam ben bir java, C # arka plan gelir gibi konu benim eksikliği affet, PHP ile değişken kapsamı ile bir yanlış anlaşılma var gibi görünüyor. Ben sadece onun dışına yerleştirerek işlevlerine veya ifadeler eğer değişkenler erişilebilir yapmak diye düşünüyordum. Aşağıda Ben başarmak için çalışıyorum ne bir parçası olduğunu:
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
}
Şimdi ne yapmak çalışıyorum dışında $ m değişken değerleri erişilebilir kılar ise ifadeleri $ sql_array [] deyiminde kullanılan $ m değişken onun içinde. C # ben sadece foreach döngü dışında bir değişkeni bildirmek ve kullanmak mümkün olacaktır. Konuda bazı okuma yaptıktan sonra ben genel veya GLOBALS anahtar kelimeler kullanarak sadece benim genel kapsam değişkeni foreach önce değeri atamak ise çalışmak ve döngü içinde bu değeri elde etmek için global $ m ilan olacağını bulundu. Ama benim geçerli kod $ m içinde bir lokal kapsamda ise tablolar ve herkes bunları kullanarak etmemektedir. Şimdi $ sql_array [] açıklamaya $ m erişilebilir hale daha iyi bir yöntem var mıdır?