您的位置:首页 > 编程语言 > PHP开发

PHP 数组(array)自定义排序

2017-02-04 20:36 465 查看
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) "开工利"
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息