我想在函数中使用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, ... )
这样的功能,所以它为我完成了所有的工作?
如果数组都具有相同的大小,可以简单地这样做:
http://pastebin.com/50zD6KnW
不需要引用,因为它只是读取数组。在这件事上,我没有对大型阵列进行基准测试,但在你的情况下,它应该工作得很好。
简短的回答,没有。有一个 PHP 函数可以合并数组,array_merge,它联合了与您用作参数的数组一样多的数组。 但请记住,您不是在创建多维数组,而是在创建具有串联值的单维数组。 添加要连接的值的唯一方法是迭代和连接,然后将组合值推送到预期的数组。