我在创建数组时遇到问题。我有表格。 表单的输入是标签输入。首先输入的是选项名称。当您输入任何选项名称时,新标签输入将添加到表单中。 我在控制器中发布数据并为产品创建自动变体。例如。 Red-S Red-M Blue-S Blue-M ...我正在使用的代码提供了以下变化:
<div class="row">
<div class="col">Left</div>
<div class="col-12 col-sm-auto">Right (Left on small)</div>
</div>
我还有另一个选项名称数组
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"
]
答案 0 :(得分:0)
如果输入正确,请输入以下内容:
$inputs = ["Red-S-Cotton", "Blue-Silk-M"];
$keys = ['Color-Size-Material', 'Color-Material-Size'];
通过执行以下操作:
$output = array_map(function($key) use ($inputs, $keys) {
$expKeys = explode('-', $keys[$key]);
$expInputs = explode('-', $inputs[$key]);
return array_combine($expKeys, $expInputs);
}, array_keys($inputs));
$output
将是:
[
[
"Color" => "Red",
"Size" => "S",
"Material" => "Cotton",
],
[
"Color" => "Blue",
"Material" => "Silk",
"Size" => "M",
]
]
答案 1 :(得分:0)
您可以跳过一个循环。
您可以编写类似这样的代码
$arr = [
0 => "Red-S-Silk-Y",
1 => "Blue-S",
2 => "Red-M-Cotton",
3 => "Blue-M",
];
$arrFinal = [];
$dataArray = [];
foreach($arr AS $value){
$expArr = explode("-",$value);
if(isset($expArr[0])){
$dataArray['color'] = $expArr[0];
}
if(isset($expArr[1])){
$dataArray['size'] = $expArr[1];
}
if(isset($expArr[2])){
$dataArray['Material'] = $expArr[2];
}
if(isset($expArr[3])){
$dataArray['Style'] = $expArr[3];
}
$arrFinal[] = $dataArray;
Unset($dataArray);
}
echo "<pre>";
print_r($arrFinal);
您的输出将是这样。
Array
(
[0] => Array
(
[color] => Red
[size] => S
[Material] => Silk
[Style] => Y
)
[1] => Array
(
[color] => Blue
[size] => S
)
[2] => Array
(
[color] => Red
[size] => M
[Material] => Cotton
)
[3] => Array
(
[color] => Blue
[size] => M
)
)
答案 2 :(得分:-1)
$result = array_merge($array1, $array2,....);