簡體   English   中英

什么時候在PHP中創建“符號” /“變量名稱”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM