<?php
$agents = [
(object)["id"=> 301,"name"=> "Agent 1"],
(object)["id"=> 303,"name"=> "Agent 2"],
(object)["id"=> 301,"name"=> "Agent 3"],
(object)["id"=> 305,"name"=> "Agent 4"],
(object)["id"=> 306,"name"=> "Agent 5"],
(object)["id"=> 303,"name"=> "Agent 6"]
];
$locations = [
(object)["xid"=> 148,"location_name"=> "USA"],
(object)["xid"=> 149,"location_name"=> "CHINA"],
(object)["xid"=> 153,"location_name"=> "GERMANY"],
(object)["xid"=> 156,"location_name"=> "CANADA"],
(object)["xid"=> 167,"location_name"=> "SINGAPORE"],
(object)["xid"=> 0,"location_name"=> "No Location"]
];
$records = [
(object)["agent_id"=> 301,"location_id"=> 156,"total"=> 10000],
(object)["agent_id"=> 303,"location_id"=> 149,"total"=> 13000],
(object)["agent_id"=> 301,"location_id"=> 156,"total"=> 10000],
(object)["agent_id"=> 305,"location_id"=> 0,"total"=> 10000],
(object)["agent_id"=> 306,"location_id"=> 148,"total"=> 10000],
(object)["agent_id"=> 303,"location_id"=> 0,"total"=> 10000]
];
foreach($agents as $agent){
$agent->locations = [];
foreach($locations as $location){
$location = clone $location;
$location->transactions = [];
foreach($records as $r){
if($r->agent_id == $agent->id && $location->xid == $r->location_id){
$location->transactions[] = $r;
}
}
$agent->locations[] = $location;
}
}
print_r($agents);
- Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
- Array
(
[0] => stdClass Object
(
[id] => 301
[name] => Agent 1
[locations] => Array
(
[0] => stdClass Object
(
[xid] => 148
[location_name] => USA
[transactions] => Array
(
)
)
[1] => stdClass Object
(
[xid] => 149
[location_name] => CHINA
[transactions] => Array
(
)
)
[2] => stdClass Object
(
[xid] => 153
[location_name] => GERMANY
[transactions] => Array
(
)
)
[3] => stdClass Object
(
[xid] => 156
[location_name] => CANADA
[transactions] => Array
(
[0] => stdClass Object
(
[agent_id] => 301
[location_id] => 156
[total] => 10000
)
[1] => stdClass Object
(
[agent_id] => 301
[location_id] => 156
[total] => 10000
)
)
)
[4] => stdClass Object
(
[xid] => 167
[location_name] => SINGAPORE
[transactions] => Array
(
)
)
[5] => stdClass Object
(
[xid] => 0
[location_name] => No Location
[transactions] => Array
(
)
)
)
)
[1] => stdClass Object
(
[id] => 303
[name] => Agent 2
[locations] => Array
(
[0] => stdClass Object
(
[xid] => 148
[location_name] => USA
[transactions] => Array
(
)
)
[1] => stdClass Object
(
[xid] => 149
[location_name] => CHINA
[transactions] => Array
(
[0] => stdClass Object
(
[agent_id] => 303
[location_id] => 149
[total] => 13000
)
)
)
[2] => stdClass Object
(
[xid] => 153
[location_name] => GERMANY
[transactions] => Array
(
)
)
[3] => stdClass Object
(
[xid] => 156
[location_name] => CANADA
[transactions] => Array
(
)
)
[4] => stdClass Object
(
[xid] => 167
[location_name] => SINGAPORE
[transactions] => Array
(
)
)
[5] => stdClass Object
(
[xid] => 0
[location_name] => No Location
[transactions] => Array
(
[0] => stdClass Object
(
[agent_id] => 303
[location_id] => 0
[total] => 10000
)
)
)
)
)
[2] => stdClass Object
(
[id] => 301
[name] => Agent 3
[locations] => Array
(
[0] => stdClass Object
(
[xid] => 148
[location_name] => USA
[transactions] => Array
(
)
)
[1] => stdClass Object
(
[xid] => 149
[location_name] => CHINA
[transactions] => Array
(
)
)
[2] => stdClass Object
(
[xid] => 153
[location_name] => GERMANY
[transactions] => Array
(
)
)
[3] => stdClass Object
(
[xid] => 156
[location_name] => CANADA
[transactions] => Array
(
[0] => stdClass Object
(
[agent_id] => 301
[location_id] => 156
[total] => 10000
)
[1] => stdClass Object
(
[agent_id] => 301
[location_id] => 156
[total] => 10000
)
)
)
[4] => stdClass Object
(
[xid] => 167
[location_name] => SINGAPORE
[transactions] => Array
(
)
)
[5] => stdClass Object
(
[xid] => 0
[location_name] => No Location
[transactions] => Array
(
)
)
)
)
[3] => stdClass Object
(
[id] => 305
[name] => Agent 4
[locations] => Array
(
[0] => stdClass Object
(
[xid] => 148
[location_name] => USA
[transactions] => Array
(
)
)
[1] => stdClass Object
(
[xid] => 149
[location_name] => CHINA
[transactions] => Array
(
)
)
[2] => stdClass Object
(
[xid] => 153
[location_name] => GERMANY
[transactions] => Array
(
)
)
[3] => stdClass Object
(
[xid] => 156
[location_name] => CANADA
[transactions] => Array
(
)
)
[4] => stdClass Object
(
[xid] => 167
[location_name] => SINGAPORE
[transactions] => Array
(
)
)
[5] => stdClass Object
(
[xid] => 0
[location_name] => No Location
[transactions] => Array
(
[0] => stdClass Object
(
[agent_id] => 305
[location_id] => 0
[total] => 10000
)
)
)
)
)
[4] => stdClass Object
(
[id] => 306
[name] => Agent 5
[locations] => Array
(
[0] => stdClass Object
(
[xid] => 148
[location_name] => USA
[transactions] => Array
(
[0] => stdClass Object
(
[agent_id] => 306
[location_id] => 148
[total] => 10000
)
)
)
[1] => stdClass Object
(
[xid] => 149
[location_name] => CHINA
[transactions] => Array
(
)
)
[2] => stdClass Object
(
[xid] => 153
[location_name] => GERMANY
[transactions] => Array
(
)
)
[3] => stdClass Object
(
[xid] => 156
[location_name] => CANADA
[transactions] => Array
(
)
)
[4] => stdClass Object
(
[xid] => 167
[location_name] => SINGAPORE
[transactions] => Array
(
)
)
[5] => stdClass Object
(
[xid] => 0
[location_name] => No Location
[transactions] => Array
(
)
)
)
)
[5] => stdClass Object
(
[id] => 303
[name] => Agent 6
[locations] => Array
(
[0] => stdClass Object
(
[xid] => 148
[location_name] => USA
[transactions] => Array
(
)
)
[1] => stdClass Object
(
[xid] => 149
[location_name] => CHINA
[transactions] => Array
(
[0] => stdClass Object
(
[agent_id] => 303
[location_id] => 149
[total] => 13000
)
)
)
[2] => stdClass Object
(
[xid] => 153
[location_name] => GERMANY
[transactions] => Array
(
)
)
[3] => stdClass Object
(
[xid] => 156
[location_name] => CANADA
[transactions] => Array
(
)
)
[4] => stdClass Object
(
[xid] => 167
[location_name] => SINGAPORE
[transactions] => Array
(
)
)
[5] => stdClass Object
(
[xid] => 0
[location_name] => No Location
[transactions] => Array
(
[0] => stdClass Object
(
[agent_id] => 303
[location_id] => 0
[total] => 10000
)
)
)
)
)
)
preferences:
88.24 ms | 434 KiB | 91 Q