php二维数组排序方法(array_multisort usort函数)

WBOY
Release: 2016-07-25 08:55:10
Original
1039 people have browsed it
  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就是排序好的数组了,可以打印出来看看。 如果需要先按年龄升序排列,再按照名称升序排列,方法同上,就是多提取一个名称数组出来,最后的排序方法这样调用:

  1. 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值,并计算长度,而后比较长度就可以了。

推荐第二种方法,因为少了提取排序内容到一维数组的步骤,而且排序方法更为灵活。



source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact [email protected]
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!