php二维数组排序的两种方法

WBOY
Freigeben: 2016-07-25 09:11:05
Original
2459 Leute haben es durchsucht
  1. $users = array(
  2. array('name' => 'tom', 'age' => 20)
  3. , array('name' => 'anny', 'age' => 18)
  4. , array('name' => 'jack', 'age' => 22)
  5. );
复制代码

希望能按照age从小到大进行排序。

以下是本人整理的两种方法,分享给大家,供学习参考。

1、使用array_multisort

使用这个方法,会比较麻烦些,要将age提取出来存储到一维数组里,然后按照age升序排列。具体代码如下:

  1. $ages = array();
  2. foreach ($users as $user) {
  3. $ages[] = $user['age'];
  4. }
  5. array_multisort($ages, SORT_ASC, $users);
复制代码

执行后,$users就是排序好的数组了,可以打印出来看看。如果需要先按年龄升序排列,再按照名称升序排列,方法同上,就是多提取一个名称数组出来,最后的排序方法这样调用: array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);

2、使用usort

使用这个方法最大的好处就是可以自定义一些比较复杂的排序方法。例如按照名称的长度降序排列:

  1. usort($users, function($a, $b) {
  2. $al = strlen($a['name']);
  3. $bl = strlen($b['name']);
  4. if ($al == $bl)
  5. return 0;
  6. return ($al > $bl) ? -1 : 1;
  7. });
复制代码

这里使用了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,并计算长度,而后比较长度就可以了。 推荐使用第二种方法,因为少了提取排序内容到一维数组的步骤,而且排序方法更为灵活。

>>> 更多内容,请查看 php数组排序方法大全



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage