發現「1」和「2」 - 但不是零「0」PHP array_search工作不搜索字符串零個
$My_Array = array('0', '1', '2');
if(array_search('0', $My_Array)){
echo "FOUND";
}else{
echo "NOT FOUND";
}
在這種情況下 - 0是一個字符串 - 爲什麼它找不到零?
發現「1」和「2」 - 但不是零「0」PHP array_search工作不搜索字符串零個
$My_Array = array('0', '1', '2');
if(array_search('0', $My_Array)){
echo "FOUND";
}else{
echo "NOT FOUND";
}
在這種情況下 - 0是一個字符串 - 爲什麼它找不到零?
從php.net array_search()
函數的文檔,
返回針的關鍵如果在數組中,否則爲FALSE。
現在到了你的問題:
爲什麼它找不到零?
是的,它確實找到了。看下面的行,
if(array_search('0', $My_Array)){ ...
在這種情況下array_search()
函數將返回0
這是元件'0'
的陣列中的索引。也正因爲如此,在if
塊將得到執行這樣的:
if(0){ ...
基本上計算爲false
,這意味着控制轉移,即使它找到元素'0'
數組中else
塊。
所以解決時,更改以下列方式您if
塊:
if(array_search('0', $My_Array) !== false){
呃!...我太蠢了...我應該看到:/ ...我實際上正在使用它,就像從我有這個代碼的地方往下走了大約10行.... 0_o – Creeperstanson
它正在返回密鑰[0] – Creeperstanson
@Creeperstanson是的,這是正確的。 –
array_search - 檢索給定值的數組,並返回,如果成功
這裏的關鍵是0.如果(0)中錯誤的結果,因此它顯示沒有找到 第一個對應的按鍵。 PHP是做什麼它聲稱要做
呃!...我太蠢了...我應該看到:/ – Creeperstanson
0被鑄造爲false – Farkie
,但它是一個字符串? – Creeperstanson
是的,但它是PHP – Farkie