巧用PHP重组二维数组:按键下标重新排列元素
本文介绍如何利用PHP高效地重组二维数组,方法是根据键的下标将相同下标的元素组合到新的数组中。 假设我们有一个二维数组,其子数组长度不一,目标是根据键的下标重组,例如:
原始数组:
$arr = [ ['测试-2票', '颜夕-2票'], ['小白-2票', '小黑-2票'], ['张张-2票', '小黄-2票', '小绿-2票'], ];
目标数组:
$expected = [ ['测试-2票', '小白-2票', '张张-2票'], ['颜夕-2票', '小黑-2票', '小黄-2票'], ['小绿-2票'] ];
我们可以使用PHP的array_map
函数结合解构赋值来优雅地解决这个问题。
PHP代码实现:
对于PHP 7.4及以上版本,可以使用简洁的箭头函数:
<?php $arr = [ ['测试-2票', '颜夕-2票'], ['小白-2票', '小黑-2票'], ['张张-2票', '小黄-2票', '小绿-2票'], ]; $result = array_map(fn(...$items) => $items, ...$arr); var_dump($result); // 输出重组后的数组 ?>
...$arr
将二维数组展开为多个参数传递给array_map
的回调函数。回调函数fn(...$items) => $items
接收这些参数并直接返回,从而实现了按键下标重组。
对于PHP 7.4之前的版本,可以使用传统的匿名函数:
<?php $arr = [ ['测试-2票', '颜夕-2票'], ['小白-2票', '小黑-2票'], ['张张-2票', '小黄-2票', '小绿-2票'], ]; $result = array_map(function (...$items) { return $items; }, ...$arr); var_dump($result); // 输出重组后的数组 ?>
这段代码的功能与PHP 7.4版本相同,只是使用了更长的匿名函数语法。
注意: 此方法高效地解决了数组重组问题,并正确处理了不同长度的子数组。 输出结果与$expected
一致。