在 php 中的自定义函数中进行排序

Tho*_*dez 2 php usort

我正在尝试制作一个非常酷的超级排序功能,但是当作为内部功能创建时,用户排序功能不起作用。这个想法是命名数组和键,然后根据我的选择返回排序的数组。

function super_sort($key,$arr){
  usort($arr, function($a, $b){
      return strcmp($a[$key], $b[$key]);
  });
  print_sorted($key,$arr);
}
Run Code Online (Sandbox Code Playgroud)

我会这样称呼它

  super_sort('name',$people);
Run Code Online (Sandbox Code Playgroud)

我也应该添加 print_sorted 函数是这个

function print_sorted($key,$arr){
  echo '<h1>'.$key.'</h1>';
  foreach($arr as $k => $v){
    echo '<strong>name:</strong> '.$v['name'].'<strong> age:</strong> '.$v['age'].'<strong> social:</strong> '.$v['social'].'<strong> index:</strong> '.$v['index'].'<br/>';
  }
}
Run Code Online (Sandbox Code Playgroud)

Dev*_*von 6

$key不存在于匿名函数的上下文中,因此使用use.

usort($arr, function($a, $b) use ($key) {
    return strcmp($a[$key], $b[$key]);
});
Run Code Online (Sandbox Code Playgroud)

http://php.net/manual/en/functions.anonymous.php

  • @ThomasValadez,您可以使用 !strcmp($a[$key], $b[$key]) 向后排列顺序。 (2认同)
  • @ThomasValadez,您还可以使用 strcmp($b[$key], $a[$key]) 进行反向排序。只需交换值即可解决问题。:) (2认同)