3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = Array ( 0 => Array ( 'name' => 'John Doe', 'age' => '36', 'code' => '437', 'group' => '1000', ), 1 => Array ( 'name' => 'John Doe', 'age' => '36', 'code' => '437', 'group' => '7777', ), 2 => Array ( 'name' => 'John Doe', 'age' => '36', 'code' => '437', 'group' => '7777', ), 3 => Array ( 'name' => 'John Doe', 'age' => '36', 'code' => '437', 'group' => '4000', ), 4 => Array ( 'name' => 'John Doe', 'age' => '36', 'code' => '437', 'group' => '4000', ), 5 => Array ( 'name' => 'John Doe', 'age' => '36', 'code' => '437', 'group' => '5000', ), 6 => Array ( 'name' => 'John Doe', 'age' => '36', 'code' => '437', 'group' => '6000', ), 7 => Array ( 'name' => 'John Doe', 'age' => '36', 'code' => '437', 'group' => '6000', ), ); $names = array_column($array, "name"); $groups = array_column($array, "group"); foreach(array_unique($names) as $name){ $intersects = array_intersect_key($array, array_intersect($names, [$name])); $new[$name] = ["name" => $name, "age" => end($intersects)["age"]]; foreach(array_unique($groups) as $group){ $intersects = array_intersect_key($array, array_intersect($groups, [$group])); foreach($intersects as $int){ $temp = array_diff($int, ["name" => $new[$name]["name"], "age" => $new[$name]["age"]]); if($temp["group"] == "1000" || $temp["group"] == "7777"){ $new[$name][$group][] = $temp; }else{ $new[$name]["others"][] = $temp; } } } } var_dump($new);
Output for 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
array(1) { ["John Doe"]=> array(5) { ["name"]=> string(8) "John Doe" ["age"]=> string(2) "36" [1000]=> array(1) { [0]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "1000" } } [7777]=> array(2) { [0]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "7777" } [1]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "7777" } } ["others"]=> array(5) { [0]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "4000" } [1]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "4000" } [2]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "5000" } [3]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "6000" } [4]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "6000" } } } }
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 array(1) { ["John Doe"]=> array(5) { ["name"]=> string(8) "John Doe" ["age"]=> string(2) "36" [1000]=> array(1) { [0]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "1000" } } [7777]=> array(2) { [0]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "7777" } [1]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "7777" } } ["others"]=> array(5) { [0]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "4000" } [1]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "4000" } [2]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "5000" } [3]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "6000" } [4]=> array(2) { ["code"]=> string(3) "437" ["group"]=> string(4) "6000" } } } }

preferences:
153.92 ms | 405 KiB | 166 Q