您现在的位置是:首页 > 技术教程 正文

PHP如何对二维数组(多维数组)进排序

admin 阅读: 2024-03-18
后台-插件-广告管理-内容页头部广告(手机)

在 PHP 中,可以使用函数 array_multisort() 来对二维数组进行排序处理。该函数可以按照指定的键或值对数组进行排序。

以下是一个示例,演示如何对二维数组按照特定的键进行排序(以键 “age” 为例):

// 假设有一个二维数组 $data $data = array( array('name' => 'Alice', 'age' => 28), array('name' => 'Bob', 'age' => 22), array('name' => 'Charlie', 'age' => 25), ); // 提取出要排序的键的值,放入临时数组中 $ages = array_column($data, 'age'); // 使用 array_multisort() 对临时数组及原始数组进行排序 array_multisort($ages, SORT_ASC, $data); // 输出排序后的数组 print_r($data);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

以上示例会按照 “age” 键的升序对二维数组进行排序,并输出排序后的结果。

你也可以根据需要对其他键进行排序,只需相应更改 array_column() 和 array_multisort() 中的键名参数即可。

在 PHP 中,还有其他几种方式可以对二维数组进行排序处理。以下是一些常用的方法:

使用 usort() 函数:usort() 可以自定义排序函数来对数组进行排序。你可以在排序函数中定义自己的排序逻辑,基于特定的键或值进行比较。

$data = array( array('name' => 'Alice', 'age' => 28), array('name' => 'Bob', 'age' => 22), array('name' => 'Charlie', 'age' => 25), ); usort($data, function($a, $b) { return $a['age'] - $b['age']; }); print_r($data);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

还可以使用 array_multisort() 函数的多键排序功能:array_multisort() 函数可以同时对多个键进行排序,而不仅限于单个键。

$data = array( array('name' => 'Alice', 'age' => 28), array('name' => 'Bob', 'age' => 22), array('name' => 'Charlie', 'age' => 25), ); $ages = array_column($data, 'age'); $names = array_column($data, 'name'); array_multisort($ages, SORT_ASC, $names, SORT_ASC, $data); print_r($data);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

如果要对字符大小进行转小写,可以使用 array_map() 和 array_column():可以结合使用 array_map() 和 array_column() 对指定键进行提取和排序。

$data = array( array('name' => 'Alice', 'age' => 28), array('name' => 'Bob', 'age' => 22), array('name' => 'Charlie', 'age' => 25), ); $data = array_map(function($item) { return array_map('strtolower', $item); }, $data); array_multisort(array_column($data, 'age'), SORT_ASC, $data); print_r($data);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索