【问题标题】:PHP looping array to get combined rows of itemsPHP循环数组以获取组合的项目行
【发布时间】:2014-05-10 12:42:15
【问题描述】:

我需要转这个数组:

$data = array(array('a', 'b'), array('1','2'), array('hi','bye'));

进入这个:

$final = array (array ('a', '1', 'hi'), array ('b','2','bye'));

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

【问题讨论】:

    标签: php arrays loops multidimensional-array foreach


    【解决方案1】:

    您可以以一种有趣的方式使用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);
    

    产量:

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

    希望这会有所帮助:)

    编辑

    如果您有兴趣详细了解这里发生的事情,我已经写了short blog post here

    基本上,如果您将null 作为第一个参数传递给array_map,那么您可以将任意数量的数组传递给它——该函数会为您完成所有的旋转。有用!

    如果你有一个数组数组(就像你一样),那么你需要一些call_user_func_array 的帮助来“解包”数组。

    【讨论】:

    • 没问题 :) 对于array_map,这是一个非常有用(并且有点不寻常)的用例 - 如果您访问它的手册页 (ie1.php.net/array_map),它会在示例 #4 下讨论它跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多