suchen

Heim  >  Fragen und Antworten  >  Hauptteil

面试 - 一道php数组排序的笔试题

数组:

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

需要排序后的结果

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

有什么好的排序写法呢?

世界只因有你世界只因有你2797 Tage vor748

Antworte allen(5)Ich werde antworten

  • 某草草

    某草草2017-05-16 13:02:16

    asort($array, SORT_FLAG_CASE | SORT_NATURAL);
    var_dump($array);

    得到:

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

    Antwort
    0
  • PHPz

    PHPz2017-05-16 13:02:16

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

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:02:16

    一个系统函数搞定

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

    Antwort
    0
  • 阿神

    阿神2017-05-16 13:02:16

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

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-05-16 13:02:16

    array_sort(array_values($rs_array))

    Antwort
    0
  • StornierenAntwort