[英]When does a 'symbol' / 'variable name' get created in PHP?
這是我的設置:
display_startup_errors =開啟
display_errors =開
error_reporting = E_ALL | E_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/>";
會產生o / p;
:
a: (refcount=1, is_ref=0)='abcd'
來自PHP手冊的參考計數基礎 :當創建一個具有恆定值的新變量時,將創建一個zval容器
這是否意味着
1]當類似於代碼2 第1行的代碼(即
$a;
時,不創建符號$a;
遇到。 由於xdebug_debug_zval找不到符號/變量名'a'。 根據引用計數基礎中的聲明,不會創建zval容器。
2]僅當類似於代碼2 第3行的代碼(即$a = "abcd";
遇到。 也就是說,僅當變量與常量值相關聯時才創建符號,並且根據Reference Counting Basics中的語句,將創建zval容器並將其與符號“ a”相關聯。 代碼2的第一行,即$a;
是無用的代碼 。
有關xdebug_debug_zval的信息,請訪問此處 。
$b;
xdebug_debug_zval('b'); echo "<br/> ";
echo $b;
上面的代碼將輸出:
注意:未定義的變量:“某行號”行中/path/to/file/file.php中的b
雖然xdebug_debug_zval在上面的代碼中沒有拋出任何錯誤!
設定$ ba不變值,
$b = "hello";
xdebug_debug_zval('b'); echo "<br/> ";
echo $b;
b:(refcount = 1,is_ref = 0)='你好'你好
上面的代碼證明只有在與常量相關聯時才創建“符號” /“變量名”
即
僅當可能創建zval時才創建“符號” /“變量名”。
如果為變量分配NULL,則可以創建符號。
$b = null;
xdebug_debug_zval('b'); echo "<br/> ";
echo $b;
上面的代碼將輸出:
b:(refcount = 1,is_ref = 0)= NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.