【问题标题】:Create multidimensional array from foreach in a function在函数中从 foreach 创建多维数组
【发布时间】:2016-02-07 02:04:45
【问题描述】:

我想在函数中使用 foreach 创建多维数组。

这是我的代码:

$colors = ['red', 'green', 'blue'];
$sizes = ['s', 'm', 'l', 'xl'];
$materials = ['cotton', 'silk'];
foreach ( $colors as $color ){
    foreach ( $sizes as $size ){
        foreach ( $materials as $material ){
            $result[] = "{$color}:{$size}:{$material}";
        }
    }
}

输出应该是这样的:

Array
(
    [0] => red:s:cotton
    [1] => red:s:silk
    [2] => red:m:cotton
    [3] => red:m:silk
    [4] => red:l:cotton
    [5] => red:l:silk
    [6] => red:xl:cotton
    [7] => red:xl:silk
    [8] => green:s:cotton
    [9] => green:s:silk
    [10] => green:m:cotton
    [11] => green:m:silk
    [12] => green:l:cotton
    [13] => green:l:silk
    [14] => green:xl:cotton
    [15] => green:xl:silk
    [16] => blue:s:cotton
    [17] => blue:s:silk
    [18] => blue:m:cotton
    [19] => blue:m:silk
    [20] => blue:l:cotton
    [21] => blue:l:silk
    [22] => blue:xl:cotton
    [23] => blue:xl:silk
)

是的,我确实得到了我想要的。但是如果我想添加更多的数组呢?在一个循环中一个循环中循环一个数组似乎一点也不方便。

有没有像merge_it( $arr1, $arr2, $arr3, ... ) 这样的函数来为我完成所有工作?

【问题讨论】:

  • 你没有创建任何多维数组,你的它是一个具有连接值的一维数组。

标签: php arrays multidimensional-array foreach


【解决方案1】:

如果数组都具有相同的大小,可以简单地这样做:

http://pastebin.com/50zD6KnW

不需要引用,因为它只是读取数组。在这个问题上,我没有对大型数组进行基准测试,但在你的情况下,它应该工作得很好。

【讨论】:

    【解决方案2】:

    简短的回答,不。有一个 PHP 函数可以合并数组,array_merge,它可以合并尽可能多的数组作为参数。但是请记住,您不是在创建多维数组,而是在创建具有连接值的一维数组。添加要连接的值的唯一方法是通过迭代和连接,然后将组合值推送到预期的数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 2014-11-03
      • 2019-09-09
      • 2012-04-26
      相关资源
      最近更新 更多