PHP 如何根据指定键的值排序二维数组?

答案

使用PHP内置usort函数实现,这里实现正向的自然排序,其他排序方式略作修改即可。

  1. function sort2DArray($arr, $column)
  2. {
  3. usort($arr, function($a, $b) use ($column) {
  4. return strnatcmp($a[$column], $b[$column]);
  5. });
  6. return $arr;
  7. }

答案解析

测试代码:

  1. $arr = array(
  2. array('id' => 3, 'name' => 'd', 'img' => 'icon2.jpg'),
  3. array('id' => 4, 'name' => 'a', 'img' => 'icon1.jpg'),
  4. array('id' => 2, 'name' => 'e', 'img' => 'icon10.jpg'),
  5. array('id' => 5, 'name' => 'b', 'img' => 'icon100.jpg'),
  6. array('id' => 1, 'name' => 'c', 'img' => 'icon9.jpg'),
  7. );
  8. print_r(sort2DArray($arr, 'id')); // 根据 id 的值排序
  9. print_r(sort2DArray($arr, 'name')); // 根据 name 的值排序
  10. print_r(sort2DArray($arr, 'img')); // 根据 img 的值排序