你如何在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"
}
Run Code Online (Sandbox Code Playgroud)
你会如何实施flipDiagonally()?
编辑:这不是作业.我只是想看看是否有任何SOers比最明显的路线更具创造性的解决方案.但是,由于一些人抱怨这个问题太容易了,那么一个适用于第 n 维数组的更通用的解决方案呢?
即如何编写函数以便:
$foo[j][k][...][x][y][z] …Run Code Online (Sandbox Code Playgroud) 合并两个数组的优雅方法是什么,这样得到的数组有两个来自第一个数组的项,后跟第二个数组中的一个项,以这种方式重复?
数组1 = A1,A2,A3,A4,A5等
数组2 = B1,B2,B3,B4,B5等
结果= A1,A2,B1,A3,A4,B2,A5,A6,B3等.
我正在尝试使用带有多个计数器的for循环来完成它,但我不知道数组长度总是根据需要长或短.我很好奇:有更好的方法吗?
这是我目前正在做的简化版本:
$x = 0, $y = 0;
for($i=0; $i<$total_num_blocks; $i++) {
if ($i % 3) { // if there's a remainder, it's not an 'every 3rd' item
$result[$i] = $projects[$x++];
} else {
$result[$i] = $posts[$y++];
}
}
Run Code Online (Sandbox Code Playgroud) 当数组 1 的值位于偶数位置而数组 2 的值位于奇数位置时,如何合并两个数组?
例子:
$arr1=array(11, 34,30);
$arr2=array(12, 666);
$output=array(11, 12, 34, 666,30);
Run Code Online (Sandbox Code Playgroud)