如圖:我並沒有聲明 $t1 和 $t2 兩個變數為什麼它可以使用?沒有任何報錯,手冊上也沒說為什麼
先上圖:
手冊說的很明白,把陣列中的值賦給一組變數。
你的問題:
所以我理解你的問題想表達兩方面意思:
沒有宣告變數
使用沒有宣告的變數不報錯誤
針對第一點,PHP是弱型別語言,而且變數不需要在使用先前聲明,你也可以理解為給變數賦值的時候同時宣告(初始化)了變數。 那麼,list的用法手冊已經說的很清楚,將數組中的值賦給一組變數,也就是你運行完list($t1, $t2) = explode(' ', microtime())的时候,已经给 $t1 和 $t2 賦值成功。
list($t1, $t2) = explode(' ', microtime())
$t1
$t2
針對第二點,對於沒有宣告的變數(也就是沒有初始化的變數),使用的話當然也報錯。 你可以試試直接 echo $undefined;,$undefined第一次出现在这里,不出意外情况,肯定报个 Notice 等級的錯誤(請先正確設定錯誤等級以及顯示錯誤)。
echo $undefined;
$undefined
Notice
所以你第二條疑問不是使用了未宣告的變數不報錯,而是你使用了 list() 已經幫你賦值過的變數了。
list()
望採納!謝謝。
======= Update ======
上面圖片也標註了PHP版本對於list()的使用區別,使用時請注意!
list 函數的作用就是把數組中的值賦給一些變量,例如:
list($a, $b, $c) = array(1, 2, 3);
那麼$a的值就是1,$b和$c的值就是2和3
list($t1,$t2)
上面的意思的將右邊的陣列的鍵值依序值給$t1 $t2
先上圖:
![](http://img.php.cn/upload/image/000/000/000/3d33074701ae9d7c441e118b6ff87cd5-0.png)
手冊說的很明白,把陣列中的值賦給一組變數。
你的問題:
所以我理解你的問題想表達兩方面意思:
沒有宣告變數
使用沒有宣告的變數不報錯誤
針對第一點,PHP是弱型別語言,而且變數不需要在使用先前聲明,你也可以理解為給變數賦值的時候同時宣告(初始化)了變數。
那麼,list的用法手冊已經說的很清楚,將數組中的值賦給一組變數,也就是你運行完
list($t1, $t2) = explode(' ', microtime())
的时候,已经给$t1
和$t2
賦值成功。針對第二點,對於沒有宣告的變數(也就是沒有初始化的變數),使用的話當然也報錯。
你可以試試直接
echo $undefined;
,$undefined
第一次出现在这里,不出意外情况,肯定报个Notice
等級的錯誤(請先正確設定錯誤等級以及顯示錯誤)。所以你第二條疑問不是使用了未宣告的變數不報錯,而是你使用了
list()
已經幫你賦值過的變數了。望採納!謝謝。
======= Update ======
上面圖片也標註了PHP版本對於list()的使用區別,使用時請注意!
list 函數的作用就是把數組中的值賦給一些變量,例如:
那麼$a的值就是1,$b和$c的值就是2和3
上面的意思的將右邊的陣列的鍵值依序值給$t1 $t2