使用 PHP 陣列通常涉及向字串或整數鍵分配值。然而,問題出現了:我們可以使用數字字串作為數組鍵,而不用 PHP 將它們轉換為整數嗎?考慮以下範例:
$blah = array('123' => 1); var_dump($blah);
這裡,您可能期望輸出為:
array(1) { ["123"]=> int(1) }
其中鍵「123」表示為字串。然而,實際的輸出是:
array(1) { [123]=> int(1) }
這表示數字字串 '123' 已轉換為整數鍵 123。
為什麼 PHP 不允許數字字串鍵?
依 PHP手冊:
鍵可以是整數或字串。如果一個鍵是整數的標準表示,它將被這樣解釋(即“8”將被解釋為 8,而“08”將被解釋為“08”)。
這表示PHP 將任何數字字串解釋為整數,即使您將其作為字串引用也是如此。
附錄:與 JavaScript 物件的比較鍵
PHP 中的此行為與 JavaScript 物件鍵類似但不完全相同。在JavaScript 中,您可以使用數字字串作為物件鍵,它們將保留其字串形式:
foo = { '10' : 'bar' }; foo['10']; // "bar" foo[10]; // "bar" foo[012]; // "bar" foo['012']; // undefined!
在此範例中,'10' 用作字串鍵,而10 和012 都被解釋作為整數。但是,「012」作為帶引號的字串被視為未定義,這與在 PHP 中被解釋為字串「012」不同。
以上是PHP 陣列可以使用數字字串作為鍵而不進行整數轉換嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!