gpt4 book ai didi

php - if 语句的变量作用域问题 (PHP)

转载 作者:IT王子 更新时间:2023-10-29 00:14:08 25 4
gpt4 key购买 nike

好吧,我似乎对 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 变量值在 if 语句之外可访问,它进入 中使用的 $m 变量$sql_array[] 语句。在 C# 中,我将简单地在 foreach 循环外声明一个变量并能够使用它。在对此事做了一些阅读之后,我发现只有在我的全局范围变量在 foreach 之前分配值并声明 global $m 以在环形。但是对于我当前的代码,$m 是 if 语句中的局部范围,每个人都不鼓励使用它们。现在,是否有更好的方法使 $sql_array[] 语句可以访问 $m

最佳答案

If 语句 block 没有自己的作用域。无论您分配给 $m 的什么数据都必须以空开始。尝试调试诸如 $_POST 变量之类的东西。另外,$m_id 在哪里被定义?也许它也是空的。

PHP 确实在函数、类方法等内部有作用域。但是 if 语句没有自己的作用域。例如,以下代码将回显 Hi there!:

$bool = true;
if ($bool) {
$new_var = 'Hi there!';
}
echo $new_var;

阅读 manual .

关于php - if 语句的变量作用域问题 (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4110340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com