Сортировка SimpleXML вариант 2
не могу понять почему массив тут отлично сортируется, а вот в этом случае нет:
Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[uuid] => 001ceab5-8f98-7444-9078-0df9188d89f7
)
[userId] => a.kozlov
[firstName] => Алексей
[lastName] => Козлов
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[uuid] => 00698f1e-edd8-ef8e-ce78-3de6bb598c72
)
[userId] => y.kuznecova
[firstName] => Юлия
[lastName] => Кузнецова
)
[2] => SimpleXMLElement Object
(
[@attributes] => Array
(
[uuid] => 00c10db9-4ce1-4f69-0a36-bc84c6206ba4
)
[userId] => n.kukushkina
[firstName] => Наталья
[lastName] => Кукушкина
)
[3] => SimpleXMLElement Object
(
[@attributes] => Array
(
[uuid] => 00ed5c1b-7a39-1ed3-b590-474a6f82755d
)
[userId] => o.zverev
[firstName] => Олег
[lastName] => Зверев
)
Я хочу сортировать по ключу lastName, делаю так:
$xml = new SimpleXMLElement($response);
$licensedUser = $xml->xpath('//licensedUser');
uasort($licensedUser, fn($a, $b) => $a->lastName - $b->lastName);
foreach ($licensedUser as $i) {
$lastName = $i->lastName;
$firstName = $i->firstName;
echo "$lastName $firstName\n";
}
Получаю вывод без сортировки (
Козлов Алексей
Кузнецова Юлия
Кукушкина Наталья
Зверев Олег
Колюжова Мария
Гончаров Валентин
Кобзев Дмитрий
Артёмова Ольга
Ответы (1 шт):
Автор решения: John Dow
→ Ссылка
Сортировка будет работать если сделать вот так:
$xml = new SimpleXMLElement($response);
$licensedUser = $xml->xpath('//licensedUser');
$array = json_decode(json_encode($licensedUser), TRUE);
function cmp($a, $b) {
return strnatcmp($a['lastName'], $b['lastName']);
}
usort($array, 'cmp');