簡體   English   中英

創建多維php數組而無需聲明

[英]Creating multidimensional php arrays without declaring

我注意到了這一點,並且不確定如何使用它。

基本上,如果您使用子數組,PHP似乎會神奇地創建子數組?

// $moo is not defined
$moo['agagag']['sdfsdf'][] = 4654645;

// no E_NOTICE or anything, it creates the array

// array(
//   'agagag' => array(
//     'sdfsdf' => array(
//       0 => 4654645
//     )
//   )
// )

此行為記錄在任何地方嗎? 使用安全嗎?

(我習慣於手動創建每個級別,這感覺很奇怪)

是的,此行為是預期的,並且也記錄在手冊中

 $arr[key] = value; $arr[] = value; // key may be an integer or string // value may be any value of any type 

如果$ arr還不存在,它將被創建 ,因此這也是創建array另一種方法 但是不建議這樣做,因為如果$ arr已經包含某個值(例如,來自請求變量的字符串),則該值將保留在該位置,並且[]實際上代表字符串訪問運算符。 最好總是通過直接賦值來初始化變量。

它已保存,您可以使用它,但是我在聲明時喜歡以下內容:

$moo = array(
   'agagag' => array(
       'sdfsdf' => array(
            4654645
        )
    )
);

這是標准行為,沒有任何問題:您可以在此處查看完整的文檔: http : //php.net/manual/en/language.types.array.php (請參閱“使用方括號語法創建/修改” )。

當然,您必須在所有代碼中都意識到這一點,當然,如果您事先知道數組的結構,則可以按照@Frankbeen答案定義它,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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