我有一个非常基本的问题。我想遍历一个多维数组。假设我想添加一个if语句来检查值而不中断foreach循环…我的目的是获取特定值
的数组$foo = [
'one'=> [
'id'=>1,
'name'=>'32dsfd23'
],
'two' => [
'id'=>1,
'name'=>'322e3'
],
];
function new_func($arr){
$data=[];
foreach($arr as $val) {
foreach($val as $key =>$foofoo) {
if(array_key_exists('id',$val)){
$data['new_arr']=$foofoo;
}
}
}
return $data;
}
echo "<pre>";
print_r(new_func($foo));
echo "</pre>";
结果是:Array
(
[new_arr] => 322e3
)
我想得到这样的结果:
Array
(
[new_arr]
[0]=> 32dsfd23,
[1]=> 322e3,
)
需要将新元素推入数组。现在你覆盖它们。
$foo = [
'one'=> [
'id'=>1,
'name'=>'32dsfd23'
],
'two' => [
'id'=>1,
'name'=>'322e3'
],
];
function new_func($arr){
$data=[];
foreach($arr as $val) {
foreach($val as $key =>$foofoo) {
if(array_key_exists('id',$val)) {
$data['new_arr'][] = $foofoo;
}
}
}
return $data;
}
echo "<pre>";
print_r(new_func($foo));
echo "</pre>";
当你这样做的时候$data['new_arr']=$foofoo;
您正在覆盖$data['new_arr']中的值。
您需要将其更改为$data['new_arr'][]=$foofoo;
,它将在该数组中插入值。