我最近注意到在我的代碼中使用array_search函數時遇到了麻煩。我正在搜索數組「$ allcraftatts」的值「sharp」。我試圖通過建立一個兩線實驗隔離問題:PHP array_search始終返回數組的第一個鍵
$testcopy=$allcraftatts;
$testsharp=array_search("sharp", $testcopy);
使用 「的print_r(get_defined_vars());」後來,我得到這個結果:
[testcopy] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => Sharp Stone
[7] => Sharp Stones
[8] => stone
[9] => object
[10] => sharp
[11] => hard
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
)
[testsharp] => 0
我確信我不會在任何其他時間修改這些變量。
現在,如果我我的代碼更改爲
$testcopy=$allcraftatts;
unset($testcopy[0]);
$testsharp=array_search("sharp", $testcopy);
返回 「1」。
這使我相信它總是返回數組中的第一個鍵。
它讓我感到困惑!這是那些讓你害怕語言本身出錯的錯誤之一。然而令人懷疑的是,實際上我最終被迫去看看PHP源代碼中是否有錯誤,但不幸的是無法理解它。
鑑於這是一個簡單的功能,我肯定會被不可避免的簡單答案完全侮辱,但在這一點上,我只想要一個答案。
什麼版本的PHP您使用的是?你也可以向我們展示'var_dump'的輸出而不是'print_r'嗎?它會顯示你是否有任何額外的空間(這是一個常見的使用'array_search'的人打嗝的經驗) –