PHP按字段排序数组?

Mic*_*und 36 php arrays sorting

可能重复:
如何通过内键对多维数组
进行排序如何在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');
Run Code Online (Sandbox Code Playgroud)

那么数据是否基于数组中的标题字段ASC顺序显示?

mea*_*gar 100

usort为此目的明确构建的用法.

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

usort($array, "cmp");
Run Code Online (Sandbox Code Playgroud)

  • 从PHP 5.3开始,您可以使用匿名函数,这在您在命名空间中的类内部时非常有用:`usort($ domain_array,function($ a,$ b){return strcmp($ a ["name"], $ b ["name"]);}); ` (38认同)
  • 您可以乘以-1来反转排序,只需对可能需要这样做的人进行FYI. (17认同)
  • 只是添加一点@GabiLee,如果你想根据你已经设置的某个变量使搜索字段动态化,试试这个:usort($ domain_array,function($ a,$ b)use($ searchField){ return strcmp($ a [$ searchField],$ b [$ searchField]);}); 例如,在用户可以选择要排序的字段的网页上,这可能很有用. (7认同)
  • 对于 php7.4 及更高版本 `usort($array, fn($a, $b) => $a['title'] <=> $b['title']);` (6认同)
  • @KyleCrossman,我们还可以以不同的顺序传递参数以获得反向排序。 (2认同)