2013-10-07 74 views
3

我的數組是這樣的:PHP中發現價值

$arr = Array(); 
$arr[] = Array("foo", "bar"); 
$arr[] = Array("test", "hello"); 

現在我要檢查,如果$arr包含其中包含foo在第一位置的數組。

是否有任何功能,或者我應該只是循環$arr並搜索其中的每個數組?這樣做的

+0

您可能能夠使用'array_walk'(HTTP:// php.net/manual/en/function.array-walk.php),儘管這是一個循環以及 –

+0

我認爲這個任務沒有內置的PHP函數,你可能需要運行一個循環來實現這一點。 –

+0

如果您只想檢查子數組的第一個位置,則運行一個循環並僅在第一個索引中進行搜索。 –

回答

1

一個漂亮的小方法是使用array_reduce - 通過傳遞在總結了值1,如果foo被發現的功能,而0,如果沒有:

$foo_found = array_reduce(
    $arr, 
    function ($num_of_hits, $item, $search_for = 'foo') { 
    $num_of_hits += $item[0] === $search_for ? 1 : 0; 
    return $num_of_hits; 
    } 
); 

$xyz_found = array_reduce(
    $arr, 
    function ($num_of_hits, $item, $search_for = 'xyz') { 
    $num_of_hits += $item[0] === $search_for ? 1 : 0; 
    return $num_of_hits; 
    } 
); 

var_dump($foo_found, $xyz_found); 

返回1和0,原因foo被發現一次,而xyz被發現零次。

0

您的陣列:

$arr = Array(); 
$arr[] = Array("foo", "bar"); 
$arr[] = Array("foo", "hello"); 

我的解決方案:

echo search_in_array("foo",$arr); // This will show you the number of items found 

function search_in_array($value, $arr){ 

    $num = 0;  
    for ($i = 0; $i < count($arr);) {  
    if($arr[$i][0] == $value) { 
      $num++; 
     } 
    $i++; 
    } 
    return $num ; 
} 
0

我認爲有幾種不同的方式來做到這一點。請檢查以下

$arr_zero = Array(); 
$arr_zero[] = Array("foo", "bar"); 
$arr_zero[] = Array("test", "hello"); 
$arr_zero[] = Array("nal", "rob"); 
$array_one = array_shift(array_values($arr_zero)); 
$element = array_shift(array_values($array_one)); 
if($element=='foo'); 
echo "its ok"; 

$arr_zero = Array(); 
$arr_zero[] = Array("foo", "bar"); 
$arr_zero[] = Array("test", "hello"); 
$array_one = array_shift(array_values($arr_zero)); 
$element = reset($array_one); // First Element's Value 
if($element=='foo'); 
echo "its ok"; 

$arr_zero = Array(); 
$arr_zero[] = Array("foo", "bar"); 
$arr_one = $arr_zero[key($arr_zero)]; 
echo $arr_one[key($arr_one)]; 

要獲取密鑰

$arr_zero = Array(); 
$arr_zero[] = Array("foo", "bar"); 
$arr_zero[] = Array("test", "hello"); 
$array_one = array_shift(array_values($arr_zero)); 
echo key($array_one); // First Element's Key