<?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