PHP和C之间的可变作用域区别:块作用域不完全相同吗?

2020/12/31 14:21 · php ·  · 0评论

以下PHP代码将输出3

function main() {
    if (1) {
        $i = 3;
    }
    echo $i;
}

main();

但是下面的C代码将引发编译错误。

void main() {
    if (1) {
        int i = 3;
    }

    printf("%d", i);
}

因此,PHP中的变量不是严格的块作用域吗?在PHP中,内部块中定义的变量可以在外部块中使用吗?

PHP仅具有函数作用域-诸如这样的控件结构if没有引入新的作用域。但是,如果您使用未声明的变量,它也不在乎。如果if语句失败,$i则不会存在main(),但是您仍然可以自由地对其进行回显。

如果您将PHP的error_reporting设置为包括通知,则当您尝试使用未定义的变量,它将在运行时发出E_NOTICE错误因此,如果您有:

function main() {
 if (rand(0,1) == 0) {
  $i = 3;
 }
 echo $i;
}

该代码可以正常运行,但是某些执行将回显“ 3”(if成功时),而某些将引发an且不E_NOTICE回显任何内容,因为$i这不会在echo语句的范围内定义。

在函数外部,$i将永远不会定义(因为函数的作用域不同)。

有关更多信息:http : //php.net/manual/zh/language.variables.scope.php

本文地址:http://php.askforanswer.com/phpheczhijiandekebianzuoyongyuqubiekuaizuoyongyubuwanquanxiangtongma.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!