2015-09-22 38 views
3

因此,我試圖獲得一組單詞的每種可能組合的列表。如何在php中返回所有可能的組合

$product_name = ‘iPhone 4s’; 
$variations = array(
    'color' => array('black', 'white'), 
    'memory' => array('16GB', '32GB', '64GB') 
); 

輸出:

array(0 => 'iPhone 4s - black, 16GB', 
     1 => 'iPhone 4s - black, 32GB', 
     2 => 'iPhone 4s - black, 64GB', 
     3 => 'iPhone 4s - white, 16GB', 
     4 => 'iPhone 4s - white, 32GB', 
     5 => 'iPhone 4s - white, 64GB', 
    ); 

的過程是在輸入文本的每一句話,我們想通過我們的價值觀的整個陣列。在那裏,我們有其他數組(「原始」=>「同義詞」)。從那裏,我們遍歷每個同義詞並將其添加到可能的組合列表中。

我的方法:

首先我認爲我應該使用兩個foreach循環來實現的結果,但然後如果我繼續增加內部陣列陣列的數量。

代碼:

$product_name = "iPhone 4s"; 

$variations = array( 
    "color" => array("black", "white"), 
    "memory" => array("16GB", "32GB", "64GB") 
); 
$a = array(); 
$count = 0; 
foreach($variations as $key => $value) { 
    foreach($value as $k => $v){ 
     $x = $product_name." - ".$value.$v."\n"; 
     array_push($a,$x); 
    } 
} 
foreach($a as $x) { 
    echo $x; 
} 
+0

你可以使用is_array()來檢查數組元素是否是另一個數組,並遍歷該循環... – Akshay

回答

3

你可以簡單的顏色使用foreach循環等作爲

$product_name = 'iPhone 4s'; 
$variations = array(
    'color' => array('black', 'white'), 
    'memory' => array('16GB', '32GB', '64GB') 
); 
$result = []; 
foreach ($variations['memory'] as $key => $value) { 
    foreach($variations['color'] as $val){ 
     $result[] = $product_name."-".$val.", ".$value; 
    } 
} 
print_r($result); 

Demo

1

的foreach會給你你在問題中提到的確切陣列輸出:

foreach ($variations['color'] as $key => $value) { 
    foreach($variations['memory'] as $val) 
     array_push($result,$product_name."-".$val.", ".$value); 
} 
相關問題