通过值从多维中获取数组


Get an array from multidimensional by a value

我有个问题。假设我有一个这样的数组:

Array
(
   [0] => Array
       (
          [id] => 4
          [name] => test
          [surname] => test1
       )
   [1] => Array
       (
           [id] => 6
           [name] => test4
           [surname] => test5
       )
)

我需要通过id获取数组的所有数据。例如,如果我想获得id=4的数据,我需要获得这样的数组:

Array
 (
    [id] => 4
    [name] => test
    [surname] => test1
 )

我试过使用array_column,但没有成功。请帮助我

借助array_combine()&array_column()

$array = array
(
   '0' => array
       (
          'id' => 4,
          'name' => 'test',
          'surname' => 'test1',
       ),
   '1' => array
       (
           'id' => 6,
           'name' => 'test4',
           'surname' => 'test5',
       )
);    
// Create array as id as index
$temp = array_combine(array_column($array, 'id'), $array);
// get the sub array
$new = $temp[4];
var_dump($new);

另一种简单的方法是

$new = array();
foreach($array as &$v) {
    if($v['id'] == 4) {
        $new = $v;
        break;
    }
}
var_dump($new);

输出

array(3) {
  ["id"]=>
  int(4)
  ["name"]=>
  string(4) "test"
  ["surname"]=>
  string(5) "test1"
}

您应该有一个循环,并检查子数组的id是否是您的搜索id,如果是,则存储子数组并中断。

$arr = array(
           array('id' => 4, 'name' => 'test', 'surname' => 'test1'),
           array('id' => 6, 'name' => 'test4', 'surname' => 'test5')
        );
$id = 4;
$out = array();
foreach($arr as $val){
    if($val['id'] == $id){
        $out = $val;
        break;
    }
}
echo '<pre>';
print_r($out);

检查一下:在线检查