gpt4 book ai didi

PHP,一个奇怪的变量范围?

转载 作者:可可西里 更新时间:2023-11-01 13:33:46 25 4
gpt4 key购买 nike

这更多的是关于“为什么”和“如何做”的问题,但它已经困扰我好几天了。目前,我正在使用 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 循环之外变量是“可用的”。所以我在一个 View 中尝试了这个:

<?php

if($a==1)
{
$b = 2;
}
echo $b;
?>

导致错误消息:

Message: Undefined variable: b

PHP 手册讲述了本地作用域,但我仍然想知道为什么会发生这种情况,以及是否有我不知道的特殊规则。这让我害怕:)

感谢分享想法,

最佳答案

只有函数才能创建新的本地作用域。花括号本身不会。花括号只是其他语言结构(ifwhileforeach)的辅助结构

无论您在何处访问局部范围内的任何变量都无关紧要。局部作用域是幕后的隐式字典(参见get_defined_vars)。您可能会通过访问以前 undefined variable 来获得调试通知,但仅此而已。

在您的具体示例中,您似乎甚至只是在全局范围内运作。

关于PHP,一个奇怪的变量范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5743279/

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