3v4l.org

run code in 300+ PHP versions simultaneously
<?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