Привет, у меня есть функция для создания вариаций, но слишком много циклов
и это функция
function combine_array($a){ $out = array(); if (count($a) == 1) { $x = array_shift($a); foreach ($x as $v) $out[] = array($v); return $out; } foreach ($a as $k => $v){ $b = $a; unset($b[$k]); $x = combine_array($b); foreach ($v as $v1){ foreach ($x as $v2) $out[] = array_merge(array($v1), $v2); } } return $out; }
и это данные массива
$data = array ( array ( 'Size', 'variation_id' => array ( 'S', 'M', ) ), array ( 'Length', 'variation_id' => array ( '14 Inches', '18 Inches', ) ) ); $check_var_id = function($value){ return $value["variation_id"]; }; $a2 = array_map($check_var_id, $data); $x = combine_array($a2); echo '<pre>'; print_r($x); echo '</pre>'
и если я скомпилирую этот скрипт, я получаю такой результат
Array ( [0] => Array ( [0] => S [1] => 14 Inches ) [1] => Array ( [0] => S [1] => 18 Inches ) [2] => Array ( [0] => M [1] => 14 Inches ) [3] => Array ( [0] => M [1] => 18 Inches ) [4] => Array ( [0] => 14 Inches [1] => S ) [5] => Array ( [0] => 14 Inches [1] => M ) [6] => Array ( [0] => 18 Inches [1] => S ) [7] => Array ( [0] => 18 Inches [1] => M ) )
Понимаете, есть
[0] => Array ( [0] => S [1] => 14 Inches )
а также
[4] => Array ( [0] => 14 Inches [1] => S )
Почему это снова зацикливается … кто-то, пожалуйста, помогите мне ..