2017-08-11 104 views
-4
Array 
(
    [Colour] => Array 
     (
      [Red] => Red 
      [Blue] => Blue 
     ) 

    [Size] => Array 
     (
      [Small] => Small 
      [Medium] => Medium 
      [Large] => Large 
     ) 

    [Brand] => Array 
     (
      [Nike] => Nike 
      [Adidas] => Adidas 
     ) 

) 

如何獲得多維度陣列來獲得這種變化的輸出:PHP拼合陣列與變化輸出

Red - Small - Nike 
Red - Medium - Nike 
Red - Large - Nike 
Red - Small - Adidas 
Red - Medium - Adidas 
Red - Large - Adidas 
Blue - Small - Nike 
Blue - Medium - Nike 
Blue - Large - Nike 
Blue - Small - Adidas 
Blue - Medium - Adidas 
Blue - Large - Adidas 
+0

你有什麼試過的?展示你的嘗試,你會得到更好的迴應。 – Script47

+0

@ Script47我還沒有,這就是爲什麼我要求得到解決方案 – tonoslfx

+6

作爲1K加代表用戶,你知道這不是如何工作。 [但是,以防萬一你不知道...](https://stackoverflow.com/help/how-to-ask) – Script47

回答

2

你所尋找的是一個笛卡爾積

合併值是這樣的:

$data = [ 
    'Colour' => [ 
     'Red' => 'Red', 
     'Blue' => 'Blue', 
    ], 
    'Size' => [ 
     'Small' => 'Small', 
     'Medium' => 'Medium', 
     'Large' => 'Large', 
    ], 
    'Brand' => [ 
     'Nike' => 'Nike', 
     'Adidas' => 'Adidas', 
    ], 
]; 

$combined = []; 

foreach ($data['Colour'] as $colour) { 
    foreach ($data['Brand'] as $brand) { 
     foreach ($data['Size'] as $size) { 
      $combined[] = implode(' - ', [ 
       $colour, 
       $size, 
       $brand 
      ]); 
     } 
    } 
} 

var_dump($combined); 

爲了參考,見:

有關示例,請參見:

+0

謝謝 - 現在給我一個主意:) – tonoslfx