【问题标题】:Get an array from multidimensional by a value [duplicate]通过值从多维中获取数组[重复]
【发布时间】:2016-05-11 08:02:33
【问题描述】:

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

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_column 显示该代码。您可能比您想象的更接近解决方案。
  • 对,你离目的地很近了。
  • @HareaCosticla,您的答案已准备好Answer
  • 这里你有一些关于如何搜索id的答案,然后你可以得到剩下的......stackoverflow.com/questions/6661530/…

标签: php arrays multidimensional-array php-5.5


【解决方案1】:

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"
}

【讨论】:

  • 为什么要参考?休息一下就好了。
  • @KiwiJuicer 感谢break!! :)
  • @Sougata,我能对你说些什么?您做出答案,然后将其标记为重复!!!
  • @FrayneKonok 有什么问题吗?
  • 不,没有错……
【解决方案2】:

您应该需要有一个循环并检查子数组的 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);

看看这个:Online check

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 2015-05-20
    相关资源
    最近更新 更多