简体   繁体   English

从php中的数组创建具有相同元素的数组

[英]create a array with same elements from a array in php

I was wondering if i can differentiate array elements in two or more different arrays like i have a array $product_options 我想知道是否可以区分两个或多个不同数组中的数组元素,例如我有一个数组$product_options

$product_options: [
    {
      "option_id": "4",
      "title": "Color",
      "value_id": "10",
      "value_title": "Red",
      "price": "12.0000"
    },
    {
      "option_id": "4",
      "title": "Color",
      "value_id": "11",
      "value_title": "Green",
      "price": "13.0000"
    },
    {
      "option_id": "3",
      "title": "Size",
      "value_id": "7",
      "value_title": "S",
      "price": "12.0000"
    },
    {
      "option_id": "3",
      "title": "Size",
      "value_id": "8",
      "value_title": "M",
      "price": "13.0000"
    }
  ]

So in the above array i have four elements with two identical elements. 所以在上面的数组中,我有四个元素,两个元素相同。 I want to separate these two identical elements into two arrays. 我想将这两个相同的元素分成两个数组。 Desired Output: 所需输出:

$product_options:[
[{
      "option_id": "4",
      "title": "Color",
      "value_id": "10",
      "value_title": "Red",
      "price": "12.0000"
    },
    {
      "option_id": "4",
      "title": "Color",
      "value_id": "11",
      "value_title": "Green",
      "price": "13.0000"
    }],
[{
      "option_id": "3",
      "title": "Size",
      "value_id": "7",
      "value_title": "S",
      "price": "12.0000"
    },
    {
      "option_id": "3",
      "title": "Size",
      "value_id": "8",
      "value_title": "M",
      "price": "13.0000"
    }]
]

PS My code is in json format but my query is in php only. PS我的代码为json格式,但我的查询仅在php中。

try this 尝试这个

    $data = array();
    foreach($product_options as $key => $value) {
        if(!key_exists($value["option_id"], $data)) {
            $data[$value["option_id"]] = array( $value );
        }
        else {
            $array = $data[$value["option_id"]];
            $array[] = $value;
            $data[$value["option_id"]] = $array;
        }
    }
    print_r($data);

    $final = array();
    foreach($data as $key => $value) {
    $final[] = $value;
}
echo json_encode($final);
$groupedProductOptions = [];

foreach($product_options as $productOption) {
    $optionId = $productOption->option_id;

    if (!array_key_exists($optionId)) {
        $result[$optionId] = [];
    }

    $groupedProductOptions[$optionId][] = $productOption;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM