2016-02-07 30 views
0

我想在函數中使用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, ...)這樣的功能,所以它爲我做的所有工作?

+0

你沒有創建任何多維數組,你是一個具有連續值的單維數組。 – datelligence

回答

0

萬一陣列都具有相同的尺寸可以簡單地這樣做:不需要

http://pastebin.com/50zD6KnW

參考,因爲它只是讀取陣列反正。當涉及到這個問題時,我還沒有對大數組進行基準測試,但在你的情況下,它應該工作得很好。

0

簡答題,沒有。有一個PHP函數可以合併數組,array_merge,它可以組合許多數組作爲參數。但請記住,您並未創建多維數組,而是您正在創建具有連續值的一維數組。添加要連接的值的唯一方法是迭代和連接,然後將組合值推送到期望的數組。