如何用PHP根据二维数组键值下标生成新的数组?
按 key 下标循环生成新数组
你有二维数组,需要通过 key 的下标来循环并组成一个新的数组。例如,你希望将以下数组:
[ 1 => [ 0 => '测试-2票', 1 => '小白-2票', 2 => '张张-2票' ], 2 => [ 0 => '颜夕-2票', 1 => '小黑-2票', 2 => '小黄-2票' ], 3 => [ 0 => '小绿-2票' ]]
转换为:
[ [ '测试-2票', '颜夕-2票' ], [ '小白-2票', '小黑-2票' ], [ '张张-2票', '小黄-2票', '小绿-2票' ]]
实现方法
立即学习“PHP免费学习笔记(深入)”;
借助 php 自带的 array_map 函数,你可以轻松实现这个功能:
$arr = [ 1 => [ 0 => '测试-2票', 1 => '小白-2票', 2 => '张张-2票' ], 2 => [ 0 => '颜夕-2票', 1 => '小黑-2票', 2 => '小黄-2票' ], 3 => [ 0 => '小绿-2票' ]];$result = array_map(function (...$list) { return $list;}, ...$arr);var_dump($result);
输出结果:
array(3) { [0] => array(2) { [0] => string(18) "测试-2票" [1] => string(18) "颜夕-2票" } [1] => array(2) { [0] => string(18) "小白-2票" [1] => string(18) "小黑-2票" } [2] => array(3) { [0] => string(18) "张张-2票" [1] => string(18) "小黄-2票" [2] => string(18) "小绿-2票" }}
由此可见,新的数组已按 key 的下标进行了循环生成。
在 php 7.4 及以上版本中,你可以使用更简便的箭头函数语法:
$result = array_map(fn(...$i) => $i, ...$arr);var_dump($result);