首页 > 编程 > PHP > 正文

PHP 数组(array)自定义排序

2019-11-14 10:16:15
字体:
来源:转载
供稿:网友

php提供的数组自定义排序函数

uasort使用用户自定义的比较函数对数组中的值进行排序并保持索引关联bool uasort(array &$array,callable $cmp_function)uksort()使用用户自定义的比较函数对数组中的键名进行排序usort()使用用户自定义的比较函数对数组中的值进行排序

相关例子: 对三维数组进行排序

function cmp($a, $b){ return strcmp($a["fruit"], $b["fruit"]);}$fruits[0]["fruit"] = "lemons";$fruits[1]["fruit"] = "apples";$fruits[2]["fruit"] = "grapes";usort($fruits, "cmp");PRint_r($fruits);//输出结果:Array( [0] => Array([fruit] => apples) [1] => Array([fruit] => grapes) [2] => Array([fruit] => lemons))

以对象作为回调函数对数组进行排序

class Obj{ var $letter; function Obj($letter){ $this->letter = $letter; } //静态的 比较函数 static function cmp_obj($a,$b){ $a = strtolower($a -> name); $b = strtolower($b -> name); if($a == $b){ return 0; } return ($a > $b) ? 1: -1; }}$a[] = new TestObj("f");$a[] = new TestObj("h");$a[] = new TestObj("z");usort($a, array("TestObj", "cmp_obj"));var_dump($a);//输出结果array(3) { [0]=> object(TestObj)#1 (1) { ["name"]=> string(1) "f"} [1]=> object(TestObj)#2 (1) { ["name"]=> string(1) "h" } [2]=> object(TestObj)#3 (1) { ["name"]=> string(1) "z" }}

将数组以另一个数组的顺序进行排序

$arrayList = array("拜年","过年好","happy new year","鸡年","红包","QQ","Logo","富贵双全","健康快乐","开工利");$newYear = array( "鸡年","过年好","红包","QQ","Logo","拜年","happy new year","开工利","富贵双全","健康快乐"); usort($newYear,function($a,$b) use($arrayList){ $indexB = array_search($b,$arrayList); $indexA = array_search($a,$arrayList); if($indexA == $indexB){ return 0; } return $indexA < $indexB ? -1 :1;});var_dump($newYear);//输出结果:array(10) { [0]=>string(6) "拜年" [1]=>string(9) "过年好" [2]=>string(14) "happy new year" [3]=>string(6) "鸡年" [4]=>string(6) "红包" [5]=>string(2) "QQ" [6]=>string(4) "Logo" [7]=>string(12) "富贵双全" [8]=>string(12) "健康快乐" [9]=>string(9) "开工利"}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表