Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于键的独立数组对象-PHP_Php_Arrays - Fatal编程技术网

基于键的独立数组对象-PHP

基于键的独立数组对象-PHP,php,arrays,Php,Arrays,我有一个包含以下数据子集的数组: "options":[ { "id":"13", "option_name":"M", "option_id":"1", "label":"Size" }, { "id":"13", "option_name":"L", "option_id":"1", "label":"Size" }, { "id":"13", "option_name":"BLUE",

我有一个包含以下数据子集的数组:

"options":[  
{  
    "id":"13",
    "option_name":"M",
    "option_id":"1",
    "label":"Size"
},
{  
    "id":"13",
    "option_name":"L",
    "option_id":"1",
    "label":"Size"
},
{  
    "id":"13",
    "option_name":"BLUE",
    "option_id":"1",
    "label":"Color"
},
{  
    "id":"13",
    "option_name":"GREEN",
    "option_id":"1",
    "label":"Color"
}
]
"options":[
{
    "label":"Size",
    "optionsArray":[
            {
                "id":"11",
                "option_name":"XL",
                "option_id":"1",
                "label":"Size",
            },
            {
                "id":"12",
                "option_name":"L",
                "option_id":"1",
                "label":"Size",
            }
        ]
},
{
    "label":"Color",

        "optionsArray":[
            {
                "id":"11",
                "option_name":"BLUE",
                "option_id":"1",
                "label":"Color",
            },
            {
                "id":"12",
                "option_name":"GREEN",
                "option_id":"1",
                "label":"Color",
            }
        ]
}
]
我想循环到这个数组中,并根据键标签分离对象/子集。详情如下:

"options":[  
{  
    "id":"13",
    "option_name":"M",
    "option_id":"1",
    "label":"Size"
},
{  
    "id":"13",
    "option_name":"L",
    "option_id":"1",
    "label":"Size"
},
{  
    "id":"13",
    "option_name":"BLUE",
    "option_id":"1",
    "label":"Color"
},
{  
    "id":"13",
    "option_name":"GREEN",
    "option_id":"1",
    "label":"Color"
}
]
"options":[
{
    "label":"Size",
    "optionsArray":[
            {
                "id":"11",
                "option_name":"XL",
                "option_id":"1",
                "label":"Size",
            },
            {
                "id":"12",
                "option_name":"L",
                "option_id":"1",
                "label":"Size",
            }
        ]
},
{
    "label":"Color",

        "optionsArray":[
            {
                "id":"11",
                "option_name":"BLUE",
                "option_id":"1",
                "label":"Color",
            },
            {
                "id":"12",
                "option_name":"GREEN",
                "option_id":"1",
                "label":"Color",
            }
        ]
}
]
如何使用PHP实现这一点

由于这篇文章已经充满了代码,stackoverflow不允许我粘贴当前的代码,所以我将尝试将简单结构粘贴为纯文本

$keys = array_keys(current($options));

$len = count($options);
foreach($keys as $key){

// Access the key first 

    for($i=0;$i<$len; $i++){

    // access the row later

        echo $array[$i][$key];
    }
}
$keys=数组_键(当前($options));
$len=计数($options);
foreach($key作为$key){
//先取钥匙
对于($i=0;$i我会这样做:

$result = [];
foreach ($options as $option) {
    if (!isset($result[$option['label']])) {
        $result[$option['label']] = [
            'label' => $option['label'],
            'optionsArray' => []
        ];
    }
    $result[$option['label']]['optionsArray'][] = $option;
}
$result = array_values($result);
我会这样做:

$result = [];
foreach ($options as $option) {
    if (!isset($result[$option['label']])) {
        $result[$option['label']] = [
            'label' => $option['label'],
            'optionsArray' => []
        ];
    }
    $result[$option['label']]['optionsArray'][] = $option;
}
$result = array_values($result);

太好了,救了我的命。谢谢你,救了我的命。谢谢