Вопрос по php, arrays, sorting – PHP Сортировать массив по полю? [Дубликат]

28

Possible Duplicate:
how to sort a multidemensional array by an inner key
How to sort an array of arrays in php?

Как я могу отсортировать массив, как:$array[$i]['title'];

Структура массива может быть такой:

array[0](
'id' => 321,
'title' => 'Some Title',
'slug' => 'some-title',
'author' => 'Some Author',
'author_slug' => 'some-author');

array[1](
'id' => 123,
'title' => 'Another Title',
'slug' => 'another-title',
'author' => 'Another Author',
'author_slug' => 'another-author');

Таким образом, данные отображаются вASC order основанный наtitle field в массиве?

Майкл: Тим просто помогал. Поиск вначале является необходимым условием, и мы получаемlot опрошенных, которые, по-видимому, не искали / не пробовали в первую очередь. halfer

Ваш Ответ

1   ответ
85

использованиеusort который построен явно для этой цели.

function cmp($a, $b)
{
    return strcmp($a["title"], $b["title"]);
}

usort($array, "cmp");
Просто добавьте немного к @GabiLee, если вы хотите, чтобы поле поиска было динамическим на основе некоторой переменной, которую вы уже установили, попробуйте это: usort ($ domain_array, function ($ a, $ b) use ($ searchField) { return strcmp ($ a [$ searchField], $ b [$ searchField]);}); Это может быть полезно, например, на веб-странице, где пользователь может выбрать поле для сортировки.
Начиная с PHP 5.3 вы можете использовать анонимные функции, что особенно полезно, если вы находитесь внутри класса в пространстве имен:usort($domain_array, function ($a, $b) { return strcmp($a["name"], $b["name"]); });
Вы также можете умножить на -1, чтобы перевернуть сортировку, просто к сведению тех, кому это может понадобиться.

Похожие вопросы