一道php数组排序的笔试题

数组:

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

需要排序后的结果

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

有什么好的排序写法呢?

阅读 1.5k
评论
    5 个回答
    • 6.1k
    asort($array, SORT_FLAG_CASE | SORT_NATURAL);
    var_dump($array);

    得到:

    array:4 [
      0 => "z01"
      3 => "Z16"
      2 => "z17"
      1 => "Z32"
    ]

      可以使用用户自定的比较函数, 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
      )
      
       */
      

        一个系统函数搞定

        <?php
        $array  = [
                    0=>"z01",
                    1=>"Z32",
                    2=>"z17",
                    3=>"Z16",
                ];
        natcasesort($array);
        print_r($array);

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

            array_sort(array_values($rs_array))

              撰写回答

              登录后参与交流、获取后续更新提醒

              相似问题
              推荐文章