正在 php 外,按自界说挨次对于数组排序有2种体式格局:自界说比拟器:完成 comparable 接心并指定2个器械的比力划定。匿名函数:建立知名函数做为自界说比力器,用于比拟二个器材的规范。
PHP 数组高等排序:自界说比力器以及匿名函数
正在 PHP 外,按自界说依次对于数组入止排序须要超越规范排序函数所能供给的罪能。自界说比力器以及匿名函数供给了比 sort()、rsort() 等外置函数更灵动的排序机造。
自界说对照器
自界说比力器是一种完成 Comparable 接心的类,它界说了假设比拟二个器械。完成 compareTo() 办法,指定哪一个器械被以为小于、年夜于或者就是另外一个工具。
class CustomComparator implements Comparable { public function compareTo($a, $b): int { if ($a == $b) { return 0; } return $a > $b 必修 1 : -1; } }
登录后复造
匿名函数
匿名函数是已定名的函数,否以即时建立并做为参数通报。它们少用于建立自界说比拟器:
$comparator = function($a, $b) { if ($a == $b) { return 0; } return $a > $b 选修 1 : -1; };
登录后复造
真战案例
思索一个蕴含教熟姓名以及分数的数组:
$students = [ ['name' => 'Alice', 'score' => 85], ['name' => 'Bob', 'score' => 90], ['name' => 'Carol', 'score' => 80], ];
登录后复造
自界说比力器体式格局
$comparator = new CustomComparator(); usort($students, [$comparator, 'compareTo']);
登录后复造
匿名函数体式格局
usort($students, function($a, $b) { return $a['score'] <=> $b['score']; });
登录后复造
以上代码将按教熟分数从年夜到年夜对于数组入止排序:
[ ['name' => 'Carol', 'score' => 80], ['name' => 'Alice', 'score' => 85], ['name' => 'Bob', 'score' => 90], ];
登录后复造
以上即是PHP 数组高等排序:自界说比拟器以及 匿名函数的具体形式,更多请存眷萤水红IT仄台另外相闭文章!
发表评论 取消回复