Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
a';符号';/';变量名';在PHP中创建?_Php_Variables_Php Internals - Fatal编程技术网

a';符号';/';变量名';在PHP中创建?

a';符号';/';变量名';在PHP中创建?,php,variables,php-internals,Php,Variables,Php Internals,这是我的设置: 显示\u启动\u错误=打开 显示错误=打开 错误报告=E|u ALL | E|u STRICT //code1: $a = "abcd"; xdebug_debug_zval('a'); 上述代码行将创建一个zval容器,并将其与符号a'关联。并将给出以下o/p a: (refcount=1, is_ref=0)='abcd' 现在考虑以下代码: //code2: $a; echo":";xdebug_debug_zval('a'); echo "<br/>";

这是我的设置:
显示\u启动\u错误=打开
显示错误=打开
错误报告=E|u ALL | E|u STRICT

//code1:
$a = "abcd";
xdebug_debug_zval('a');
上述代码行将创建一个zval容器,并将其与符号a'关联。并将给出以下o/p

a: (refcount=1, is_ref=0)='abcd' 
现在考虑以下代码:

//code2:
$a;
echo":";xdebug_debug_zval('a'); echo "<br/>";
$a = "abcd";
xdebug_debug_zval('a'); echo "<br/>";
根据PHP手册:当使用常量值创建新变量时,将创建zval容器

这是否意味着,

1] 当代码类似于代码2的第1行时,即
$a,不创建符号。因为xdebug_debug_zval找不到符号/变量名“a”。根据声明,未创建zval容器。
2] 仅当代码类似于代码2的第3行时,即
$A=“abcd;”时,才会创建符号。i、 e.仅当变量与常量值关联时,才会创建符号&根据zval容器中的语句,创建符号并与符号“a”关联。代码2的第1行,即
$a是一段无用的代码。

有关xdebug调试的信息,请访问。


$b;
xdebug_debug_zval('b'); echo "<br/> ";
echo $b;
$b;
xdebug_debug_zval('b');回声“
”; 亿美元;
上述代码将输出:

注意:未定义的变量:b位于/path/to/file/file.php中的“some line number”行

xdebug_debug_zval并没有在上面的代码中抛出任何错误

将$b指定为固定值

$b = "hello";
xdebug_debug_zval('b'); echo "<br/> ";
echo $b;
$b=“你好”;
xdebug_debug_zval('b');回声“
”; 亿美元;
b:(refcount=1,is_ref=0)=‘你好’ 你好

上述代码证明,只有当一个常量与其关联时,才会创建一个“符号”/“变量名”
,也就是说,
只有在可能创建zval时,才会创建一个“符号”/“变量名”

如果变量赋值为NULL,则可以创建符号

$b=null;
xdebug_debug_zval('b');回声“
”; 亿美元;
上述代码将输出:

b:(refcount=1,is_ref=0)=NULL


你注意到通知了吗?@IgnacioVazquez Abrams对不起。你打算说什么?当你试图从一个不存在的变量中读取时,会出现的通知。当然,只有在启用了通知显示的情况下,您才能看到它…@IgnacioVazquez Abrams是的,如果有错误,我可以看到:这是我的设置:显示\启动\错误=显示\错误=错误报告=E\全部| E_STRICT@IgnacioVazquez-艾布拉姆斯对我的推断补充了一个答案。
$b = "hello";
xdebug_debug_zval('b'); echo "<br/> ";
echo $b;
$b = null;
xdebug_debug_zval('b'); echo "<br/> ";
echo $b;