出于某種原因,在一種環境中,當我將一個值插入到陣列中時,它會使用負索引進行推送。'original' 和 'newOne' 只是為了展示我在進入奇怪的部分之前如何操作陣列,我不確定這是否與問題有關:
$original = [];
$original[-7] = 'first';
$original[-6] = 'second';
$newOne = [];
$newOne = $original $newOne;
$newOne[] = 'third';
列印這個:
Array
(
[-7] => first
[-6] => second
[-5] => third
)
在另一個環境和我測驗的 3 個不同的在線 PHP 網站中,上面的代碼將按預期運行,列印:
Array
(
[-7] => first
[-6] => second
[0] => third
)
在那些在線 PHP 網站中,我從 PHP 5.6 到 8.1 進行了測驗,結果與此無關。
我的問題是:為什么索引從$newOne[] = 'third';變為-5,而它應該始終為0?
uj5u.com熱心網友回復:
我用自己的代碼創建并在各種 PHP 版本中運行它:
$original = [-7 => 'first',
-6 => 'second'];
$original[] = 'third';
print_r($original);
結果可能會讓您感興趣。8.0.1 - 8.0.25、8.1.0 - 8.1.12、8.2rc1 - rc3 的輸出為:
Array
(
[-7] => first
[-6] => second
[-5] => third
)
7.4.0 - 7.4.32 的輸出為:
Array
(
[-7] => first
[-6] => second
[0] => third
)
見::https ://3v4l.org/a0GJj
因此,對您的問題的一個非常簡短的回答是問題是錯誤的。您所說的導致 -5 鍵的代碼實際上并不是您運行的代碼。
PHP 8.0 改變了它增加負數陣列鍵的方式。您在上面的示例中看到的內容已在此處記錄:PHP 8.0:隱式負陣列鍵增量不跳過負數
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522370.html
標籤:php数组
上一篇:WordPressAdminAjax400錯誤,回傳0
下一篇:PHPpost請求,總是收到空值
