【问题标题】:Hey, I have a situation with an array and I don't know how to solve it, can someone help me?嘿,我有一个数组的情况,我不知道如何解决,有人可以帮助我吗?
【发布时间】:2023-02-06 00:44:22
【问题描述】:

我有这种情况:

$variation = [

    "sku" =>  [
        0 => "dSADad",
        1 => "ASDAF",
        2 => "ASFAS",
        // ...
    ],
    "Price" => [
        0 => "1",
        1 => "1",
        2 => "1",
        // ...
    ],
    "Quantity" =>  [
        0 => "123",
        1 => "123",
        2 => "123434",
        // ...
    ],
    "attributes" => [

        "Color" => [
            0 => "5",
            1 => "4",
            2 => "4",
            // ...
        ],
        "Size" =>  [
            0 => "3",
            1 => "3",
            2 => "2",
            // ...
        ],
        "Material" =>  [
            0 => "7",
            1 => "7",
            2 => "8",
            // ...
        ],
    ],
];

我想将其转换为按单独的变体分组,如下例所示:我尝试了几种选择但没有结果。我也试过在提交前用JS给输入添加索引,但还是不行。剩下的唯一选择是将其转换为 php..

$variations = [

    0 => [

        "Sku" =>  [
            0 => "dSADad",
        ],
        "Price" => [
            0 => "1",
        ],
        "Quantity" =>  [
            0 => "123",
        ],
        "attributes" => [

            "Color" => [
                0 => "5",
            ],
            "Size" =>  [
                0 => "3",
            ],
            "Material" =>  [
                0 => "7",
            ],
        ],
    ],
    1 => [

        "Sku" =>  [
            1 => "ASDAF",
        ],
        "Price" => [
            1 => "1",
        ],
        "Quantity" =>  [
            1 => "123",
        ],
        "attributes" => [

            "Color" => [
                1 => "4",
            ],
            "Size" =>  [
                1 => "3",
            ],
            "Material" =>  [
                1 => "7",
            ],
            // ....
        ],
    ]
// ...
];

【问题讨论】:

    标签: php arrays multidimensional-array arraylist associative-array


    【解决方案1】:

    我设法制作了这段代码:

    function extractVariation($variations, $key)
    {
        $variation = [];
        foreach ($variations as $property => $values) {
            if (isset($values[$key])) {
                $variation[$property] = $values[$key];
            } else {
                $variation[$property] = extractVariation($values, $key);
            }
        }
        return $variation;
    }
    
    $newVariations = [];
    
    foreach ($variations['sku'] as $key => $sku) {
        $newVariations[] = extractVariation($variations, $key);
    }
    
    var_export($newVariations);
    

    在此处查看工作示例:https://3v4l.org/l4gJQ

    请注意,我将您的$variation 数组重命名为$variations

    该函数是递归的,允许它进入属性数组。

    输出是:

    array (
      0 => 
      array (
        'sku' => 'dSADad',
        'Price' => '1',
        'Quantity' => '123',
        'attributes' => 
        array (
          'Color' => '5',
          'Size' => '3',
          'Material' => '7',
        ),
      ),
      1 => 
      array (
        'sku' => 'ASDAF',
        'Price' => '1',
        'Quantity' => '123',
        'attributes' => 
        array (
          'Color' => '4',
          'Size' => '3',
          'Material' => '7',
        ),
      ),
      2 => 
      array (
        'sku' => 'ASFAS',
        'Price' => '1',
        'Quantity' => '123434',
        'attributes' => 
        array (
          'Color' => '4',
          'Size' => '2',
          'Material' => '8',
        ),
      ),
    )
    

    展示你的尝试总是更好的,即使它不能完全奏效。这样,这里的人就可以看出您不是简单地要求他们为您编写代码,而是您确实有问题。

    【讨论】:

      猜你喜欢
      • 2020-11-20
      • 2021-05-30
      • 2011-12-11
      • 1970-01-01
      • 2021-07-10
      • 2021-09-18
      • 1970-01-01
      • 2018-08-13
      • 2015-05-31
      相关资源
      最近更新 更多