我有一个非常基本的问题。我想迭代一个多维数组。假设我想在不破坏foreach循环的情况下添加if语句来检查值...我的目的是获取特定值的数组
$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,
)
答案 0 :(得分:1)
您需要推送数组中的新元素。现在你覆盖它们。
$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>";
答案 1 :(得分:0)
当你这样做的时候
$data['new_arr']=$foofoo;
你正在覆盖$ data ['new_arr']中的值。
您需要将其更改为$data['new_arr'][]=$foofoo;
,这将在该数组中插入值。