2013-10-07 50 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