php - 在关键基础上分离 Array 对象 - PHP
问题描述
我有一个包含以下数据子集的数组:
"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"
}
]
我想循环进入这个数组并根据 key label分离对象/子集。如下:
"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];
}
}
解决方案
我会这样做:
$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);
推荐阅读
- javascript - 将当前日期格式化为 yyyy/mm/dd
- firebase - Flutter Firebase 获取集合数据
- android - 使用 r8 启动时 Xamarin.Android 版本构建崩溃
- html - Rails - 将客户端模型保存到数据库中
- javascript - 如何在顶点交互式网格中的列上设置焦点
- python-3.x - 如何从对话流中的芯片建议触发动作?
- r - Butcher 包不适用于 depmixS4 模型
- bentley-itwin - 创建项目时获取无效的 JWT
- r - 如何使用 xyplot 将一年中的月份设为我的 x 轴
- javascript - undefined 不是对象(正在评估 'addProduct.price').. 我不知道为什么会出现此错误?