搜尋

首頁  >  問答  >  主體

php$t1$t2

如圖:
我並沒有聲明 $t1 和 $t2 兩個變數
為什麼它可以使用?沒有任何報錯,手冊上也沒說為什麼

淡淡烟草味淡淡烟草味2811 天前566

全部回覆(3)我來回復

  • phpcn_u1582

    phpcn_u15822017-05-16 13:11:14

    先上圖:

    手冊說的很明白,把陣列中的值賦給一組變數。

    你的問題:

    如圖:
    我並沒有聲明 $t1 和 $t2 兩個變數
    為什麼它可以使用?沒有任何報錯,手冊上也沒說為什麼

    所以我理解你的問題想表達兩方面意思:

    1. 沒有宣告變數

    2. 使用沒有宣告的變數不報錯誤

    針對第一點,PHP是弱型別語言,而且變數不需要在使用先前聲明,你也可以理解為給變數賦值的時候同時宣告(初始化)了變數。
    那麼,list的用法手冊已經說的很清楚,將數組中的值賦給一組變數,也就是你運行完list($t1, $t2) = explode(' ', microtime())的时候,已经给 $t1$t2 賦值成功。

    針對第二點,對於沒有宣告的變數(也就是沒有初始化的變數),使用的話當然也報錯。
    你可以試試直接 echo $undefined;$undefined第一次出现在这里,不出意外情况,肯定报个 Notice 等級的錯誤(請先正確設定錯誤等級以及顯示錯誤)。

    所以你第二條疑問不是使用了未宣告的變數不報錯,而是你使用了 list() 已經幫你賦值過的變數了。

    望採納!謝謝。

    ======= Update ======

    上面圖片也標註了PHP版本對於list()的使用區別,使用時請注意!

    回覆
    0
  • 某草草

    某草草2017-05-16 13:11:14

    list 函數的作用就是把數組中的值賦給一些變量,例如:

    list($a, $b, $c) = array(1, 2, 3);

    那麼$a的值就是1,$b和$c的值就是2和3

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:11:14

    list($t1,$t2)

    上面的意思的將右邊的陣列的鍵值依序值給$t1 $t2

    回覆
    0
  • 取消回覆