一道php数组排序的笔试题

发布于 2022-09-04 22:00:29 字数 323 浏览 15 评论 0

数组:

$array  = [
            0=>"z01",
            1=>"Z32",
            2=>"z17",
            3=>"Z16",
        ];

需要排序后的结果

$rs_array = [
        0=>"z01",
        3=>"Z16",
        2=>"z17",
        1=>"Z32",
    ];

有什么好的排序写法呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

天生の放荡 2022-09-11 22:00:29
asort($array, SORT_FLAG_CASE | SORT_NATURAL);
var_dump($array);

得到:

array:4 [
  0 => "z01"
  3 => "Z16"
  2 => "z17"
  1 => "Z32"
]
酒废 2022-09-11 22:00:29

可以使用用户自定的比较函数, usort


$array  = [
            0=>"z01",
            1=>"Z32",
            2=>"z17",
            3=>"Z16",
        ];

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

usort($array, "cmp");
print_r($array);

/*

Array
(
    [0] => z01
    [1] => Z16
    [2] => z17
    [3] => Z32
)

 */
赠佳期 2022-09-11 22:00:29

一个系统函数搞定

<?php
$array  = [
            0=>"z01",
            1=>"Z32",
            2=>"z17",
            3=>"Z16",
        ];
natcasesort($array);
print_r($array);
鲜血染红嫁衣 2022-09-11 22:00:29

有个数组函数,直接比对value的

风追烟花雨 2022-09-11 22:00:29

array_sort(array_values($rs_array))

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文