PHP循环数组以获取组合的项目行

lle*_*oun 1 php arrays foreach loops multidimensional-array

我需要打开这个数组:

$data = array(array('a', 'b'), array('1','2'), array('hi','bye'));
Run Code Online (Sandbox Code Playgroud)

进入这一个:

$final = array (array ('a', '1', 'hi'), array ('b','2','bye'));
Run Code Online (Sandbox Code Playgroud)

如何循环$data获取$final?我已经循环了几个小时,我无法得到它.

Dar*_*ght 5

您可以使用array_map有趣的方式执行此操作:

$data = array(array('a', 'b'), array('1','2'), array('hi','bye'));
array_unshift($data, null); /* or use the array union operator: array(null) + $data */
$result = call_user_func_array('array_map', $data);
print_r($result);
Run Code Online (Sandbox Code Playgroud)

产量:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => 1
            [2] => hi
        )

    [1] => Array
        (
            [0] => b
            [1] => 2
            [2] => bye
        )

)
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)

编辑

如果你对这里发生的事情的细分感兴趣,我在这里写了一篇简短的博客文章

基本上,如果你null作为第一个参数传递array_map,你可以传递任意数量的数组 - 该函数为你完成所有旋转.有用!

如果您有一个数组数组(就像您一样),那么您需要一些帮助call_user_func_array来"解包"数组.