2010-02-01 58 views
5

我正在嘗試查找數組中的值。這個數組總是從0開始的。 不幸的是array_search開始用數組元素1搜索。 所以第一個元素總是被忽略。陣列搜索中的問題

我該如何「移動」該數組以1開始,還是使數組搜索從0開始?該數組來自XML Web服務,所以我不能集結修改結果。

+0

也許你應該展示你的代碼和你如何搜索,因爲顯然'array_search'工作正確但也許它不是你的目的正確的功能。 – 2010-02-01 20:52:52

回答

2

請參閱手冊,它可以幫助你: http://www.php.net/manual/en/function.array-search.php

如果你想要做的是利用增加一個按鍵,你可以這樣做:

function my_array_search($needle, $haystack, $strict=false) { 
    $key = array_search($needle, $haystack, $strict); 
    if (is_integer($key)) $key++; 
    return $key; 
} 
my_array_search($xml_service_array); 
+0

嗯thanx,但你可以解釋更多,因爲我用零但不工作。 array_search()從0鍵開始? – 2010-02-01 20:50:50

+1

確定索引關鍵字是零,小心以meagar作爲例子 – Ghazanfari 2010-02-01 20:53:48

+0

這個例子在技術上可以解決你的問題,但是結果鍵將指向你想要找的元素。儘管如此,你仍然會找到元素0。因此,它返回的密鑰實際上不會告訴你在哪裏查找數據。 – meagar 2010-02-01 20:55:01

13

array_search開始索引1搜索嘗試這個例子:

<?php 
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 
$key = array_search('blue', $array); // $key = 0 
?> 

不管是什麼問題,我s並不是它的第一個元素是索引0.

它更可能是您使用==而不是===來檢查返回值。如果array_search返回0,表示第一個元素,下面的代碼將無法正常工作:

// doesn't work when element 0 is matched! 
if (false == array_search(...)) { ... } 

相反,你必須使用===,這兩個值進行比較,檢查中鍵入

// works, even when element 0 is matched 
if (false === array_search(...)) { ... } 
+0

哇,哥們,真棒,我想我找到了問題。 – 2010-02-01 20:52:31

+0

在這個網站上的這個大紅色警告**框中說:http://php.net/manual/en/function.array-search.php閱讀手冊頁有時真的有幫助! – 2010-02-01 20:54:13