如何按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

回到顶部