在函数中从foreach创建多维数组

时间:2016-02-07 02:04:45

标签: php arrays multidimensional-array foreach

我想在函数中使用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, ... )的功能,所以它为我完成所有工作?

2 个答案:

答案 0 :(得分:0)

如果阵列都具有相同的大小,可以这样做:

http://pastebin.com/50zD6KnW

不需要参考,因为它只是读取数组。在涉及到这个问题时,我没有对大型阵列进行基准测试,但在你的情况下,它应该可以很好地工作。

答案 1 :(得分:0)

简短的回答,没有。有一个PHP函数来合并数组array_merge,这些数组与你用作参数的数组一样多。但请记住,您不是在创建多维数组,而是创建具有连接值的一维数组。添加要连接的值的唯一方法是迭代和连接,然后将组合值推送到预期的数组。