我有以下資料要在重復時合并:
{
"employee_id": 7,
"organization_id": 1,
"year": 2021,
"tenure_id": 1,
"leave_name": "Annual Leaves",
"leaves": 26,
"lates": "1",
"leave_id": 1,
"assigned_quota": 99,
"available_quota": "12",
"is_default_leave": 1,
"exceeding": 14
},
{
"employee_id": 15,
"organization_id": 1,
"year": 2021,
"tenure_id": 1,
"leave_name": "test",
"leaves": "25",
"lates": "0",
"leave_id": 16,
"assigned_quota": 50,
"available_quota": "4",
"is_default_leave": 0,
"exceeding": 21
},
{
"employee_id": 15,
"organization_id": 1,
"year": 2021,
"tenure_id": 1,
"leave_name": "Annual Leaves",
"leaves": 25,
"lates": "0",
"leave_id": 1,
"assigned_quota": 99,
"available_quota": "9",
"is_default_leave": 1,
"exceeding": 16
}
知道我希望它在合并時喜歡這樣:
{
"employee_id": 15,
"organization_id": 1,
"year": 2021,
"tenure_id": 1,
"leaves": [
{
"leave_name": "Annual Leaves",
"leaves": 25,
"lates": "0",
"leave_id": 1,
"assigned_quota": 99,
"available_quota": "9",
"is_default_leave": 1,
"exceeding": 16
},
{
"leave_name": "test",
"leaves": "25",
"lates": "0",
"leave_id": 16,
"assigned_quota": 50,
"available_quota": "4",
"is_default_leave": 0,
"exceeding": 21
}
]
}
我嘗試過使用帶有“employee_id”的groupby,但是它提供了以id為父級的資料和陣列,其中我不希望任何人在這里請解釋我該如何實作這一點。
uj5u.com熱心網友回復:
merge 方法回傳合并的集合
$c1 = new Collection(['foo']);
$c2 = new Collection(['bar']);
$merged = $c1->merge($c2); // Contains foo and bar.
$c1 = CollectionA::all();
$c2 = CollectionB::all();
$merged = $c1->merge($c2);
uj5u.com熱心網友回復:
不確定構建的集合方法是否會為您做到這一點,但一些簡單的 PHP 代碼會
$jstring = '[{
"employee_id": 7, "organization_id": 1, "year": 2021,
"tenure_id": 1, "leave_name": "Annual Leaves", "leaves": 26,
"lates": "1", "leave_id": 1, "assigned_quota": 99,
"available_quota": "12", "is_default_leave": 1, "exceeding": 14
},
{
"employee_id": 15, "organization_id": 1, "year": 2021,
"tenure_id": 1, "leave_name": "test", "leaves": "25",
"lates": "0", "leave_id": 16, "assigned_quota": 50,
"available_quota": "4", "is_default_leave": 0, "exceeding": 21
},
{
"employee_id": 15, "organization_id": 1, "year": 2021,
"tenure_id": 1, "leave_name": "Annual Leaves", "leaves": 25,
"lates": "0", "leave_id": 1, "assigned_quota": 99,
"available_quota": "9", "is_default_leave": 1, "exceeding": 16
}]';
$json = json_decode($jstring);
$merged = [];
foreach ($json as $jobj){
if ( array_key_exists($jobj->employee_id, $merged) ) {
// we saw this one before so add to the employee's leaves array
$merged[$jobj->employee_id]->leaves[] = [ "leave_name" => $jobj->leave_name,
"leaves" => $jobj->leaves,
"lates" => $jobj->lates,
"leave_id" => $jobj->leave_id,
"assigned_quota" => $jobj->assigned_quota,
"available_quota" => $jobj->available_quota,
"is_default_leave" => $jobj->is_default_leave,
"exceeding" => $jobj->exceeding
];
} else {
$leaves = [ "leave_name" => $jobj->leave_name,
"leaves" => $jobj->leaves,
"lates" => $jobj->lates,
"leave_id" => $jobj->leave_id,
"assigned_quota" => $jobj->assigned_quota,
"available_quota" => $jobj->available_quota,
"is_default_leave" => $jobj->is_default_leave,
"exceeding" => $jobj->exceeding
];
$obj = new stdClass;
$obj->employee_id = $jobj->employee_id;
$obj->organization_id = $jobj->organization_id;
$obj->year = $jobj->year;
$obj->tenure_id = $jobj->tenure_id;
$obj->leaves[] = $leaves;
$merged[$jobj->employee_id] = $obj;
}
}
print_r($merged);
結果
Array (
[7] => stdClass Object (
[employee_id] => 7
[organization_id] => 1
[year] => 2021
[tenure_id] => 1
[leaves] => Array (
[0] => Array (
[leave_name] => Annual Leaves
[leaves] => 26
[lates] => 1
[leave_id] => 1
[assigned_quota] => 99
[available_quota] => 12
[is_default_leave] => 1
[exceeding] => 14
)
}
)
[15] => stdClass Object (
[employee_id] => 15
[organization_id] => 1
[year] => 2021
[tenure_id] => 1
[leaves] => Array (
[0] => Array {
[leave_name] => test
[leaves] => 25
[lates] => 0
[leave_id] => 16
[assigned_quota] => 50
[available_quota] => 4
[is_default_leave] => 0
[exceeding] => 21
)
[1] => Array (
[leave_name] => Annual Leaves
[leaves] => 25
[lates] => 0
[leave_id] => 1
[assigned_quota] => 99
[available_quota] => 9
[is_default_leave] => 1
[exceeding] => 16
)
)
)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/421230.html
標籤:
上一篇:在測驗中提供私有和已洗掉的服務
