在PHP中转换多维数组如何在PHP中翻转90度(转置)多维数组?例如:// Start with this array
$foo = array(
'a' => array(
1 => 'a1',
2 => 'a2',
3 => 'a3'
),
'b' => array(
1 => 'b1',
2 => 'b2',
3 => 'b3'
),
'c' => array(
1 => 'c1',
2 => 'c2',
3 => 'c3'
)
);
$bar = flipDiagonally($foo); // Mystery function
var_dump($bar[2]);
// Desired output:
array(3) {
["a"]=>
string(2) "a2"
["b"]=>
string(2) "b2"
["c"]=>
string(2) "c2"
}你会如何实现flipDiagonally()?编辑:这不是作业。我只想看看是否有任何SOER有一个比最明显的路线更有创意的解决方案。但是,由于有少数人抱怨这个问题太容易,那么更通用的解决方案又如何呢?TH维数组?也就是说,您将如何编写一个函数,以便:$foo[j][k][...][x][y][z] = $bar[z][k][...][x][y][j]?(PS.)我不认为12个嵌套for loops是这种情况下的最佳解决方案。)
3 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
function transpose($array) { array_unshift($array, null); return call_user_func_array('array_map', $array); }
function transpose($array) { return array_map(null, ...$array); }
慕妹3242003
TA贡献1824条经验 获得超6个赞
function flipDiagonally($arr) { $out = array(); foreach ($arr as $key => $subarr) { foreach ($subarr as $subkey => $subvalue) { $out[$subkey][$key] = $subvalue; } } return $out; }
当年话下
TA贡献1890条经验 获得超9个赞
function array_transpose($array, $selectKey = false) { if (!is_array($array)) return false; $return = array(); foreach($array as $key => $value) { if (!is_array($value)) return $array; if ($selectKey) { if (isset($value[$selectKey])) $return[] = $value[$selectKey]; } else { foreach ($value as $key2 => $value2) { $return[$key2][$key] = $value2; } } } return $return; }
- 3 回答
- 0 关注
- 540 浏览
添加回答
举报
0/150
提交
取消