Php 将多维数组中的所有数组元素上移一级
我有一个数组,看起来像Php 将多维数组中的所有数组元素上移一级,php,Php,我有一个数组,看起来像 $arr = array( array( 'test1' => 'testing1' ), array( 'test2' => array( 1 =>'testing2 ) ); 我想把它变成 $newArr = array( 'test1' => 'testing1', 'test2' => array( 1 => '
$arr = array(
array(
'test1' => 'testing1'
),
array(
'test2' => array(
1 =>'testing2
)
);
我想把它变成
$newArr = array(
'test1' => 'testing1',
'test2' => array(
1 => 'testing2'
)
);
所以我一直在尝试将所有数组元素上移一个级别
艾德:
这是我将2个阵列组合在一起的方法:
public function arrayMerge($arr1, $arr2)
{
foreach($arr2 as $key => $value) {
$condition = (array_key_exists($key, $arr1) && is_array($value));
$arr1[$key] = ($condition ? $this->arrayMerge($arr1[$key], $arr2[$key]) : $value);
}
return $arr1;
}
这有点琐碎,很多方法都是可能的 例如,使用创建阵列内所有阵列的并集:
$newArr = array();
foreach ($arr as $subarray)
$newArr += $subarray;
或通过以下方式同时使用所有子阵列:
试一试
输出
array
'test1' => string 'testing1' (length=8)
'test2' =>
array
1 => string 'testing2' (length=8)
谢谢,这与我的arrayMerge()方法结合使用效果非常好!如果不使用
foreach
,是否没有内置函数来执行此操作?在PHPI中,将多维数组转换为一维数组会更容易,因为我们无法使用嵌套的3到4个foreach循环从数组中提取数据,所以PHPI一直在搜索这样一个内置函数。如果有人不使用foreach esp:with内置函数,那么我会称他/她为PHP的王冠。我需要做同样的事情,尽管我发现只要做$newArray=$oldArray[0]
就可以解决问题。这在您的情况下不起作用吗?我更喜欢这种方法,因为它避免了“foreach”循环。谢谢。从PHP5.6开始,您可以使用splat操作符$arr=array\u merge(…$arr)
。它比call_user_func_数组快得多
$arr = array(
array('test1' => 'testing1' ),
array('test2' => array(1 =>'testing2'))
);
$new = array();
foreach($arr as $value) {
$new += $value;
}
var_dump($new);
array
'test1' => string 'testing1' (length=8)
'test2' =>
array
1 => string 'testing2' (length=8)