У меня проблема с созданием массива.У меня есть форма.Входные данные формы являются входными данными тега.Первый ввод - имя опции.Когда вы вводите любую опцию name, новый тег ввода добавляется в форму.Я размещаю данные в контроллере и создаю автоматические варианты для продукта.Например.Red-S Red-M Blue-S Blue-M ... Код, который я использую, дает вариации, выглядящие так:
array:4 [
0 => "Red-S"
1 => "Blue-S"
2 => "Red-M"
3 => "Blue-M"
]
И у меня есть еще один массив для имен опций
array:2 [
0 => "Color"
1 => "Size"
]
Я хочу создать один массив, похожий на этот:
array:2 [
"Color" => "Red"
"Size" => "S"
]
Это мой контроллер
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);
$result[] = compact('combinations', 'inputs');
return view('system.modules.variants', compact('result'));
}