Сортировать подэлементы массива - PullRequest
0 голосов
/ 28 марта 2012

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

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Mickey
        )

    [1] => Array
        (
            [id] => 2
            [name] => Donald
        )

    [2] => Array
        (
            [id] => 3
            [name] => Goofy
        )
    )

Есть ли способ отсортировать по алфавиту поле 'name'?

Ответы [ 3 ]

1 голос
/ 28 марта 2012

Да, есть. Использование метода обратного вызова для usort () ;

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

usort($list, 'my_sorter');
0 голосов
/ 28 марта 2012

usort работает нормально.Функция, переданная usort, должна быть функцией сравнения, которая возвращает значение меньше единицы, если ab, и 0, если a == b.Из-за того, как ваши массивы отформатированы, ваша функция сравнения должна сравнивать [[name]] и b ['name'].Итак:

function cmp($a, $b)
{
    return strcmp($a['name'],$b['name']);
}
$a = array(array("id" => 2, "name" => "Donald"),array("id" => 3, "name" => "Goofy"),array("id" => 4, "name" => "Mickey"));
usort($a, "cmp");
foreach ($a as $key => $value) {
    echo "$key: ".$value['name']."\n";
}
0 голосов
/ 28 марта 2012

Вы можете использовать usort() http://php.net/manual/en/function.usort.php

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