首頁 >後端開發 >php教程 >PHP 陣列可以使用數字字串作為鍵而不進行整數轉換嗎?

PHP 陣列可以使用數字字串作為鍵而不進行整數轉換嗎?

Barbara Streisand
Barbara Streisand原創
2024-12-02 09:55:12859瀏覽

Can PHP Arrays Use Numeric Strings as Keys Without Integer Conversion?

在 PHP 陣列中分配字串整數鍵

使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn