PHP在多维数组中查找值

3

我的数组看起来像这样:

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

现在我想检查$arr是否包含一个数组,该数组在第一个位置包含foo

是否有此功能的函数,还是应该循环$arr并搜索其中每个数组?


你可能可以使用 array_walk(http://php.net/manual/en/function.array-walk.php),虽然它也是一个循环。 - Zathrus Writer
我认为PHP中没有内置的函数可以完成这个任务,你可能需要运行一个循环来实现。 - black_belt
如果您只想在子数组的前几个位置进行检查,则可以运行循环并仅在第一个索引中搜索。 - black_belt
你可以使用自定义函数,并结合PHP的内置递归功能array_walk_recursive - MDEV
3个回答

1

一个很巧妙的方法是使用 array_reduce - 通过传入一个函数,如果找到了 foo 值则将值加 1,否则加 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接