这更多的是一个关于“为什么”然后“如何做”的问题,但它已经困扰我好几天了。目前,我正在使用 CodeIgniter 进行一些工作,并暂时从 Ruby 返回到 PHP,这让我对以下作用域魔法感到困扰。
<?php $query = $this->db->get('articles', 2);
if ($query->num_rows() > 0)
{
foreach ($query->result_array() as $row)
{
$data[] = $row; # <-- first appearance here
}
return $data; # <--- :S what?!
}
正如您所看到的,我并不完全是 PHP 专家,但局部作用域的想法让我感到困扰,因为在 foreach 循环之外变量是“可用的”。所以我在视图中尝试了这个:
<?php
if($a==1)
{
$b = 2;
}
echo $b;
?>
这会导致错误消息:
Message: Undefined variable: b
PHP 手册讲述了本地作用域,但我仍然想知道为什么会发生这种情况以及是否有我不知道的特殊规则。这让我害怕:)
感谢您分享想法,
只有函数才能创建新的局部作用域。大括号本身则不然。大括号只是一个辅助构造函数对于其他语言结构(if
, while
or foreach
).
无论您在何处访问本地范围内的任何变量都无关紧要。本地范围是隐式字典幕后(见获取定义变量)。您可能会通过访问以前未定义的变量来获得调试通知,但仅此而已。
在您的具体示例中,您似乎甚至只是在全局范围内操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)