Привет, есть проблема с объединением массива
Мой первый массив - это параметры продукта
Второй массив - это варианты продукта
Мне нужно продублировать значения моего массива параметров, пока значения равнык количеству значений второго массива.
Например,
$inputs = ["Red-S-Cotton", "Blue-Silk-M"];
$keys = ['Color-Size-Material', 'Color-Material-Size'];
в значениях этого массива равно 2 = 2 Но у моего массива $ keys есть только одно значение
$key = ['Color-Size-Material'];
когда я пытался объединить их, я получаю сообщение об ошибке, потому что они не равны.
Мои значения массива и имена значений могут изменяться и получать случайно.у меня есть код выглядит следующим образом:
function make_combinations($props)
{
if ( empty($props) ) return [];
$keys = array_keys($props);
$key = $keys[0];
$values = $props[$key];
unset($props[$key]);
$rest = make_combinations($props);
if ( empty($values) ) return $rest;
if ( empty($rest) ) return $values;
$combinations = [];
foreach($rest as $comb)
{
foreach($values as $value)
{
$combinations[] = $value . '-' . $comb;
}
}
return $combinations;
}
$inputs = explode(',', $request['option']);
$props = [];
foreach($inputs as $input)
{
$input_key = strtolower($input);
if ( !$request->has($input_key) ) continue;
$input_values = explode(',', $request->input($input_key));
$props[$input_key] = $input_values;
}
$combinations = make_combinations($props);
$as = array(implode('-', $inputs));
$inpu = $combinations;
$keys =$as;
$say = count($inpu);
$say2 = count($keys);
if($say2 < $say) {
$output = array_map(function ($key) use ($inpu, $keys) {
$expKeys = explode('-', $keys[$key]);
$expInputs = explode('-', $inpu[$key]);
return array_combine($expKeys, $expInputs);
}, array_keys($inpu));
dd($output);
}else{
$output = array_map(function ($key) use ($inpu, $keys) {
$expKeys = explode('-', $keys[$key]);
$expInputs = explode('-', $inpu[$key]);
return array_combine($expKeys, $expInputs);
}, array_keys($inpu));
dd($output);
}
$result[] = compact('combinations', 'inputs');
return view('system.modules.variants', compact('result'));
}
вывод моего первого массива:
array:1 [
0 => "Color-Size"
]
Вывод второго массива:
array:2 [
0 => "Red-S"
1 => "Blue-S"
]
Первый массив может быть цвета-Size-Material-Type .... Второй массив может быть Red-SA-Cotton ... Пожалуйста, помогите мне
Мне нужен вывод, как это:
array:2 [
0 => array:2 [
"Color" => "Red"
"Size" => "S"
]
1 => array:2 [
"Color" => "Blue"
"Size" => "S"
]
]