2010-08-17 73 views
2

我正在尋找一個字符串作爲數組中的數組值是否存在以檢查是否可能以及如何使用PHP?在數組中搜索匹配的字符串

+0

可能的重複:http://stackoverflow.com/questions/555975/how-to-find-a-string-in-an-array-in-php – 2010-08-17 19:14:19

回答

8

如果你只是想知道,如果它存在,使用in_array(),如:

$exists = in_array("needle", $haystack); 

如果你想知道它的相應的鍵,用array_search(),如:

$key = array_search("needle", $haystack); 
// will return key for found value, or FALSE if not found 
3

你可以使用PHP的in_array函數來查看它是否存在,或者array_search看看它在哪裏。

例子:

$a = array('a'=>'dog', 'b'=>'fish'); 

in_array('dog', $a); //true 
in_array('cat', $a); //false 

array_search('dog', $a); //'a' 
array_search('cat', $a); //false 
0

array_search功能不正是你想要的。

$index = array_search("string to search for", $array); 
1

再者,雖然你可能應該使用in_arrayarray_search喜歡這些美好的先生們建議,只是讓你知道該怎麼做的情況下,你需要做一個手動搜索,你也可以這樣做:

<?php 

    // $arr is the array to be searched, $needle the string to find. 
    // $found is true if the string is found, false otherwise. 

    $found = false; 
    foreach($arr as $key => $value) { 
     if($value == $needle) { 
      $found = true; 
      break; 
     } 
    } 

?> 

我知道這似乎愚蠢做了人工搜索,找到一個字符串 - 它是 - 但你可能有一天希望與數組做更復雜的東西,所以它的好,知道如何真正得到每$ key- $值對。

0

說我們有這個數組:如果你想檢查元素「富」是陣列中

<?php 
$array = array(
    1 => 'foo', 
    2 => 'bar', 
    3 => 'baz', 
); 
?> 

,你會如果你想獲得這樣做

<?php 
if(in_array('foo', $array)) { 
    // in array... 
}else{ 
    // not in array... 
} 
?> 

「富」的數組索引,你可以這樣做:

<?php 
$key = array_search('foo', $array); 
?> 

此外,對於自變量在這些函數的順序一個簡單的規則是:「需要樂,然後乾草堆「;你在找什麼應該是第一位的,你在找什麼。