假设下面有这样的数组。
$i = array(
'arr1' => array(
'a11' => 'ar11',
'a12' => 'ar12',
),
'arr2' => array(
'a21' => 'ar21',
'a22' => 'ar22',
'a23' => 'ar23',
),
'arr3' => 'arrr3',
'arr4' => 'arrr4'
);我想要一个新的数组,像下面提到的,
$j = array(
'a11' => 'ar11',
'a12' => 'ar12',
'a21' => 'ar21',
'a22' => 'ar22',
'a23' => 'ar23',
'arr3' => 'arrr3',
'arr4' => 'arrr4'
);我试着提取最后两个元素,它们不是数组,我提到了下面的代码
$ii = $i;
foreach($ii as $k => $v):
if(is_array($v)):
unset($ii[$k]);
endif;
endforeach;这将返回最后两个元素。但是,我试图提取其他元素的方式看起来是有线的,如下所示。
$i1 = $i['arr1'];
$i2 = $i['arr2'];
$i3 = array_merge($i1, $i2);
$final = array_merge($i3, $j);这看起来很简单,因为它有少量的元素,但是我的项目中有大量的元素,还有其他方法来获得这个输出吗?
发布于 2020-02-15 10:17:12
你能试试这个吗?
$final = [];
foreach($i as $key => $value){
if(is_array($value){
$final = array_merge($final, $value);
} else{
$final[$key] = $value;
}
}Upd.
@坚持要解释循环内部发生了什么。首先,我们检查值是否是数组。如果值是一个数组,我们将嵌套数组与(新的,在循环开始前创建)数组合并,在其中放置元素。如果值不是数组,我们只需获取该值并将其添加到最后的数组中。这里没有魔法。但是下面使用array_walk_recursive()的答案要优雅得多,但里面有“魔力”。
发布于 2020-02-15 10:22:18
https://stackoverflow.com/questions/60237738
复制相似问题