如何按key的下标来循环成一个新的数组?
想要这种效果: 通过二维数组中key的下标一样 来循环组成一个新的数组
Array
(
[1] => Array (
[0] => 测试-2票
[1] => 小白-2票
[2] => 张张-2票
)
[2] => Array
(
[0] => 颜夕-2票
[1] => 小黑-2票
[2] => 小黄-2票
)
[3] => Array
(
[0] => 小绿-2票
)
)
回答:
你这结果里面也不对啊,小绿应该是 2 才对吧,得益于 PHP 自带的 array_map,你可以轻松实现这个功能。
<?php$arr = [
['测试-2票', '颜夕-2票',],
['小白-2票', '小黑-2票',],
['张张-2票', '小黄-2票', '小绿-2票',],
];
$result = array_map(function (...$list) {
return $list;
}, ...$arr);
var_dump($result);
如果是在 PHP 7.4+ ,还可以更简单。
$result = array_map(fn(...$i) => $i, ...$arr);var_dump($result);
回答:
如果是题中例子的效果,用foreach暴力实现了。用array_map等也是可以的,更精简一些。
<?php$arr = [
['测试-2票', '颜夕-2票'],
['小白-2票', '小黑-2票'],
['张张-2票', '小黄-2票', '小绿-2票'],
];
$result = [];
foreach ($arr as $item) {
foreach ($item as $key => $value) {
if (!isset($result[$key])) {
$result[$key] = [];
}
$result[$key][] = $value;
}
}
var_dump($result);
回答:
看起来好像是矩阵转置?就是将二维数组的列变成行。我试着写了下代码:
$arr = [ ['测试-2票', '颜夕-2票'],
['小白-2票', '小黑-2票'],
['张张-2票', '小黄-2票', '小绿-2票'],
];
$maxCols = max(array_map("count", $arr));
$newArr = [];
for ($i = 0; $i < $maxCols; $i++) {
$newArr[] = array_column($arr, $i);
}
var_dump($newArr);
以上是 如何按key的下标来循环成一个新的数组? 的全部内容, 来源链接: utcz.com/p/944574.html