合并两个数组并创建新数组

时间:2019-04-26 07:38:03

标签: php laravel

我在创建数组时遇到问题。我有表格。 表单的输入是标签输入。首先输入的是选项名称。当您输入任何选项名称时,新标签输入将添加到表单中。 我在控制器中发布数据并为产品创建自动变体。例如。 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" 
 ]

3 个答案:

答案 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,....);