<?php
function sorter($array) {
// find the key which doesn't have a matching value
$unique = array_diff(array_keys($array), $array);
$key = reset($unique);
$value = $array[$key];
$result = array($key => $value);
// follow the values backwards until the key matches the value
while ($key != $value) {
$key = $array[$key];
$value = $array[$key];
$result = array($key => $value) + $result;
}
return $result;
}
$main = array(
'lorem' => 'lorem',
'ipsum' => 'duis',
'sit' => 'adipiscing',
'duis' => 'sit',
'amet' => 'elit',
'consectetur' => 'lorem',
'adipiscing' => 'consectetur',
'eiusmod' => 'ipsum',
'labore' => 'eiusmod',
'dolore' => 'labore',
'magna' => 'dolore',
'aliqua' => 'amet',
'incididunt' => 'magna',
'tempor' => 'incididunt',
'sed' => 'tempor',
'elit' => 'sed',
);
print_r(sorter($main));
- Output for 7.3.0 - 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.19, 8.3.0 - 8.3.4, 8.3.6 - 8.3.7
- Array
(
[lorem] => lorem
[consectetur] => lorem
[adipiscing] => consectetur
[sit] => adipiscing
[duis] => sit
[ipsum] => duis
[eiusmod] => ipsum
[labore] => eiusmod
[dolore] => labore
[magna] => dolore
[incididunt] => magna
[tempor] => incididunt
[sed] => tempor
[elit] => sed
[amet] => elit
[aliqua] => amet
)
- 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
(
[lorem] => lorem
[consectetur] => lorem
[adipiscing] => consectetur
[sit] => adipiscing
[duis] => sit
[ipsum] => duis
[eiusmod] => ipsum
[labore] => eiusmod
[dolore] => labore
[magna] => dolore
[incididunt] => magna
[tempor] => incididunt
[sed] => tempor
[elit] => sed
[amet] => elit
[aliqua] => amet
)
preferences:
188.01 ms | 402 KiB | 155 Q