PHP版本低于7时,如何从多维数组提取指定键值到新数组?
拆分多维数组为两个指定结构的数组
没问题,针对你的需求,我给你写个兼容性拉满的实现方案——毕竟你说PHP版本不是7,咱们用所有版本都支持的写法就行:
首先先把你的原始数组定义出来:
$originalArray = array( '0' => array('id'=>1,'name'=>'abc','class'=>'xyz'), '1' => array('id'=>2,'name'=>'abc1','class'=>'xyz1'), '2' => array('id'=>3,'name'=>'abc','class'=>'xyz2'), );
方法一:foreach循环(全版本兼容)
这种写法不管是PHP5还是更低版本都能正常运行,逻辑也直白易懂:
$array1 = array(); $array2 = array(); foreach ($originalArray as $item) { // 组装数组1:保留id和name字段 $array1[] = array( 'id' => $item['id'], 'name' => $item['name'] ); // 组装数组2:保留id和class字段 $array2[] = array( 'id' => $item['id'], 'class' => $item['class'] ); }
执行完之后,$array1就是你要的第一个数组:
array( '0' => array('id'=>1,'name'=>'abc'), '1' => array('id'=>2,'name'=>'abc1'), '2' => array('id'=>3,'name'=>'abc'), );
$array2就是第二个目标数组:
array( '0' => array('id'=>1,'class'=>'xyz'), '1' => array('id'=>2,'class'=>'xyz1'), '2' => array('id'=>3,'class'=>'xyz2'), );
方法二:array_map函数(PHP5.3+兼容)
如果你的PHP版本在5.3及以上,也可以用array_map简化代码,写法更简洁:
$array1 = array_map(function($item) { return array('id' => $item['id'], 'name' => $item['name']); }, $originalArray); $array2 = array_map(function($item) { return array('id' => $item['id'], 'class' => $item['class']); }, $originalArray);
要是你的版本比5.3还低,那还是用foreach更稳妥哦~
内容的提问来源于stack exchange,提问作者Imran Qamer
相关产品推荐
相关产品推荐

