Не удается отсортировать массив объектов по имени свойства - PullRequest
0 голосов
/ 26 мая 2020

У меня есть этот массив:

$array = array(
    ['name' => 'Indor Swimming Pool'],
    ['name' => 'abracadabra'],
);

Я хочу отсортировать по алфавиту, поэтому я сделал:

usort($array, function($a, $b)
{
    return strcmp($a['name'], $b['name']);
});

, но когда я его сбрасываю:

var_dump($array);

Я получаю:

array(2) {
  [0]=>
  array(1) {
    ["name"]=>
    string(19) "Indor Swimming Pool"
  }
  [1]=>
  array(1) {
    ["name"]=>
    string(11) "abracadabra"
  }
}

это неверно, abracadabra должно go как первое

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Согласно таблице ASCII сначала идет chr I , а затем a chr

Таблица ASCII

Итак, здесь ваш массив фактически сортируется в алфавитном порядке для достижения желаемого результата, вам нужно отсортировать массив в порядке убывания

<?php
$data = array(
    ['name' => 'Indor Swimming Pool'],
    ['name' => 'abracadabra'],
);
arsort($data);
?>

Вывод

Array
(
    [1] => Array
        (
            [name] => abracadabra
        )

    [0] => Array
        (
            [name] => Indor Swimming Pool
        )

)
0 голосов
/ 26 мая 2020

Работает по назначению. Причина этого порядка в том, что «a» на самом деле стоит после «I» в ASCII.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...