博主信息
博文 33
粉丝 0
评论 1
访问量 50390
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP 中各种神奇的数组排序函数
萝卜温的博客
原创
842人浏览过
  • 1.最简单的莫过于 sort,不过sort只支持索引数组的键值排序,不维系原本的键名--键值关系

<?php
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val) {
    echo "fruits[" . $key . "] = " . $val . "\n";
}
?>

结果为:
fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange
  • 2.asort排序函数,维系键名 -- 键值关系,按键值排序

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

结果为:
c = apple
b = banana
d = lemon
a = orange
  • 3.ksort排序函数,维系键名 -- 键值关系,按键名排序

<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

结果为:
a = orange
b = banana
c = apple
d = lemon
  • 4.array_multisort,排序多个数组,每个数组都是“列数组”,一个数组排序好了,另外的数组也会相应调整,类比数据库中的 order by 指定了多个字段进行排序,每个字段下面的数据类比这里的一个数组!

<?php
$ar1 = array(10, 100, 100, 0);
$ar2 = array(1, 3, 2, 4);
array_multisort($ar1, $ar2);

var_dump($ar1);
var_dump($ar2);
?>

结果为:
array(4) {
  [0]=> int(0)
  [1]=> int(10)
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(4)
  [1]=> int(1)
  [2]=> int(2)
  [3]=> int(3)
}
  • 5.usort,自定义排序函数

function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}
?>

结果为:
0: 1
1: 2
2: 3
3: 5
4: 6
  • uasort,自定义排序函数,比较键值,仍然维系键名 -- 键值关系

<?php
//自定义比较函数
function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

//原始数组
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);

//排序并输出结果
uasort($array, 'cmp');
print_r($array);
?>

结果为:
Array
(
    [a] => 4
    [b] => 8
    [c] => -1
    [d] => -9
    [e] => 2
    [f] => 5
    [g] => 3
    [h] => -4
)
Array
(
    [d] => -9
    [h] => -4
    [c] => -1
    [e] => 2
    [g] => 3
    [a] => 4
    [f] => 5
    [b] => 8
)
  • uksort,自定义排序函数,比较键名,仍然维系键名 -- 键值关系

<?php
function cmp($a, $b)
{
    //去除掉前置的量词
    $a = preg_replace('@^(a|an|the) @', '', $a);
    $b = preg_replace('@^(a|an|the) @', '', $b);
    //忽略大小写比较两个字符串
    return strcasecmp($a, $b);
}

$a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);

uksort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}
?>

结果为:
an apple: 3
a banana: 4
the Earth: 2
John: 1


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学