2015-09-22 2 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', 
    ); 

Процедура для каждого слова во входном тексте, мы хотим, чтобы пройти через весь наш массив значений. Там есть другие массивы («original» => «синонимы»). Оттуда мы прокручиваем каждый синоним и добавляем его в список возможных комбинаций.

Мой подход:

Во-первых, я думаю, что я должен использовать два цикла Еогеасп для достижения результата, но тогда что, если я продолжать увеличивать количество массива внутри массива.

Код:

$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); 
} 
Смежные вопросы