按字段对 PHP 数组进行排序?

60

可能是重复:
如何按内部键排序多维数组
如何在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'
);

所以数据是按照数组中的标题字段升序 显示的吗?


迈克尔:蒂姆只是想帮忙。在这里,先搜索一下是一个前提条件,我们得到了很多问题提问者似乎没有先搜索或尝试过。 - halfer
1个回答

148

使用usort函数,该函数专门用于此目的。

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

usort($array, "cmp");

23
如果需要,您可以乘以-1来反转排序顺序,这只是一个提示。 - Kyle Crossman
51
从 PHP 5.3 开始,你可以使用匿名函数,在命名空间内的类中特别有用: usort($domain_array, function ($a, $b) { return strcmp($a["name"], $b["name"]); }); 匿名函数可用于回调函数等场景。 - Gabi Lee
8
稍微补充一下 @GabiLee 的内容,如果你希望搜索字段根据某个已设置的变量动态变化,可以尝试使用以下代码:usort($domain_array, function ($a, $b) use ($searchField) { return strcmp($a[$searchField], $b[$searchField]); }); 例如,在用户可以选择排序字段的网页上会非常有用。 - stealthysnacks
2
@KyleCrossman 我们也可以以不同的顺序传递参数来获得反向排序。 - Talha Imam
6
对于 PHP 7.4 及以上版本,可以使用以下代码对数组按照 'title' 键值进行排序:usort($array, fn($a, $b) => $a['title'] <=> $b['title']); - pmiguelpinto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接