php如何按id分组
我是PHP新手。我正在处理数组数据结构。目前,我得到了两个相同ID但不同细节的结果。我需要根据ID合并详细信息 这是我的数组结果php如何按id分组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我是PHP新手。我正在处理数组数据结构。目前,我得到了两个相同ID但不同细节的结果。我需要根据ID合并详细信息 这是我的数组结果 array:2 [ 0 => array:13 [ "id" => "1" "date" => "01-02-2019" "order" => array:1 [ 0 => array:2 [ "code" => "F001" "name" => "fis
array:2 [
0 => array:13 [
"id" => "1"
"date" => "01-02-2019"
"order" => array:1 [
0 => array:2 [
"code" => "F001"
"name" => "fish"
]
]
]
1 => array:13 [
"id" => "1"
"date" => "01-02-2019"
"order" => array:1 [
0 => array:2 [
"code" => "F002"
"name" => "chicken"
]
]
]
]
这是我预期的结果
array:1 [
0 => array:13 [
"id" => "1"
"date" => "01-02-2019"
"order" => array:2 [
0 => array:2 [
"code" => "F001"
"name" => "fish"
]
1 => array:2 [
"code" => "F002"
"name" => "chicken"
]
]
]
]
如果有相同的id,我将尝试插入order数组
这是我的密码
public function order($value)
{
$group_id = [];
$groupItem = [];
foreach ($value as $item) {
$item['date'] = date('Y-m-d',strtotime($item['date']));
$groupItem = $item['order'][] = [
'id' => $item['id'],
'name' => $item['name'],
];
$group_id[$item['id']][]= $groupItem;
}
}
结果
array:1 [
"1" => array:1 [
0 => array:2 [
"code" => "F001"
"name" => "fish"
]
1 => array:2 [
"code" => "F002"
"name" => "chicken"
]
]
]
如您所见,我对订单进行了分组,但缺少日期和id。分配适当的数据。试试-
foreach ($value as $item) {
$date = date('Y-m-d',strtotime($item['date']));
$id = $item['id'];
$group_id[$id]['id'] = $id;
$group_id[$id]['date'] = $date;
$group_id[$id]['order'][] = [
'id' => $item['id'],
'name' => $item['name'],
];
}
分配适当的数据。试试-
foreach ($value as $item) {
$date = date('Y-m-d',strtotime($item['date']));
$id = $item['id'];
$group_id[$id]['id'] = $id;
$group_id[$id]['date'] = $date;
$group_id[$id]['order'][] = [
'id' => $item['id'],
'name' => $item['name'],
];
}
如果您需要考虑多个ID,我会这样写:
$result=array\u reduce($input,function($result,$item){
$id=$item['id'];
如果(!isset($result[$id]){//我们还没有项目。
$result[$id]=$item;
}否则{//我们有一个项目,需要向其添加订单。
$result[$id]['order']=array_merge($result[$id]['order'],$item['order']);
}
返回$result;
}, [] );
如果您需要考虑多个ID,我会这样写:
$result=array\u reduce($input,function($result,$item){
$id=$item['id'];
如果(!isset($result[$id]){//我们还没有项目。
$result[$id]=$item;
}否则{//我们有一个项目,需要向其添加订单。
$result[$id]['order']=array_merge($result[$id]['order'],$item['order']);
}
返回$result;
}, [] );
这是一个工单功能:
function order($input) {
$output = array();
foreach($input as $item) {
if (!isset($output[$item['id']])) {
$output[$item['id']] = array(
"id" => $item["id"],
"date" => $item["date"],
"order" => array()
);
}
$output[$item['id']]['order'][] = $item['order'];
}
return array_values($output);
}
输入:
array(
array(
"id" => "1",
"date" => "01-02-2019",
"order" => array(
array(
"code" => "F001",
"name" => "fish"
)
)
),
array(
"id" => "1",
"date" => "01-02-2019",
"order" => array(
array(
"code" => "F002",
"name" => "chicken"
)
)
)
);
输出:
array(
array(
"id"=> "1",
"date"=> "01-02-2019",
"order"=> array(
array(
array(
"code"=> "F001",
"name"=> "fish"
)
),
array(
array(
"code"=> "F002",
"name"=> "chicken"
)
)
)
)
)
这是一个工作指令函数:
function order($input) {
$output = array();
foreach($input as $item) {
if (!isset($output[$item['id']])) {
$output[$item['id']] = array(
"id" => $item["id"],
"date" => $item["date"],
"order" => array()
);
}
$output[$item['id']]['order'][] = $item['order'];
}
return array_values($output);
}
输入:
array(
array(
"id" => "1",
"date" => "01-02-2019",
"order" => array(
array(
"code" => "F001",
"name" => "fish"
)
)
),
array(
"id" => "1",
"date" => "01-02-2019",
"order" => array(
array(
"code" => "F002",
"name" => "chicken"
)
)
)
);
输出:
array(
array(
"id"=> "1",
"date"=> "01-02-2019",
"order"=> array(
array(
array(
"code"=> "F001",
"name"=> "fish"
)
),
array(
array(
"code"=> "F002",
"name"=> "chicken"
)
)
)
)
)
您的输入可以有不同的ID吗?如中所示,您是否需要对输入中的多个不同项目执行此操作,或者它们始终属于同一ID,只需要合并订单部分?是的,我的输入可以是不同的ID。如果有
相同的ID,它将合并。您的输入可以有不同的ID吗?如中所示,您是否需要对输入中的多个不同项目执行此操作,或者它们始终属于同一ID,只需要合并订单部分?是的,我的输入可以是不同的ID。如果存在相同的ID,则它将合并。