【问题标题】:Convert two or more Simple Arrays to Multidimensional Array?将两个或多个简单数组转换为多维数组?
【发布时间】:2015-07-31 18:38:35
【问题描述】:

鉴于我有这些数组:

$array1:

Array
(
    [0] => Title1
    [1] => Title2
    [2] => Title3
    [3] => Title4
...

$array2:

Array
(
    [0] => A
    [1] => B
    [2] => C
    [3] => D
...

$array3:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
...

我想将所有上面的数组转换成一个多维数组,如下所示:

Array
(
    [0] => Array
        (
            [0] => Title1
            [1] => A
            [2] => 1
        )

    [1] => Array
        (
            [0] => Title2
            [1] => B
            [2] => 2
        )

    [2] => Array
        (
            [0] => Title3
            [1] => C
            [2] => 3
        )
...

我有这段代码可以做我想做的事,但是过多且效率低:

$result1 = array();
foreach($array1 as $key => $value) {
    $tmp = array($value);
    if (isset($array2[$key])) {
        $tmp[] = $array2[$key];
    }
    $result1[] = $tmp;
}

$result2 = array();
$i=0;
foreach($result1 as $value){
  $result2[$i] = $value;
  $result2[$i][] = $array3[$i];
  $i++;
}

print_r($result2);

在效率方面,我该如何改进我的代码?这可以在一个“foreach”中完成吗?如果我有十个甚至更多的简单数组呢?如果是这种情况,使用我的代码我将不得不复制第二个 foreach 并更改前两个数组之后的每个其他数组的变量。

【问题讨论】:

    标签: php arrays multidimensional-array foreach


    【解决方案1】:

    这应该适合你:

    只需使用array_map() 一次循环遍历所有数组,例如

    $result = array_map(function($v1, $v2, $v3){
        return [$v1, $v2, $v3];
    }, $array1, $array2, $array3);
    

    或者你可以使用call_user_func_array(),所以如果你扩展你只需将变量添加到数组中,而不必在匿名函数中添加参数:

    $result = call_user_func_array("array_map", [NULL, $array1, $array2, $array3]);
    

    【讨论】:

    • 哇@Rizier123。总是以好的答案排在首位。完美运行。谢谢!!
    • 你也是 :) @Rizier123
    【解决方案2】:

    array_map() 是要走的路,但要容易得多:

    $result = array_map(null, $array1, $array2, $array3);
    

    【讨论】:

    • 我以为你今天只发布evil() 答案?! :D
    • 对不起 ;-) eval('$result = array_map(null, $array1, $array2, $array3);');
    猜你喜欢
    • 2019-03-20
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 2015-12-24
    • 1970-01-01
    相关资源
    最近更新 更多