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;