Сортировка 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');
→ Ссылка