我有个问题。假设我有一个这样的数组:
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);
检查一下:在线检查