重新排列数组,按page_x后面数字排<?
$arr=array(
"page_1",
"page_12",
"page_11",
"page_22",
"page_2",
"page_5",
"page_3"
);

//怎样将$arr 按后面的数字由小到大重新排列?
//用sort出来的结果是 1 ,10,11,2,21,不符合要求
?>

解决方案 »

  1.   


    <?php
    $arr=array(
    "page_1",
    "page_12",
    "page_11",
    "page_22",
    "page_2",
    "page_5",
    "page_3"
    );//sort($arr);usort($arr,"my_sort");
    print_r($arr);function my_sort($str1,$str2){
    //echo "<br>";
    $num1 = substr($str1,5);
    //echo "---";
    $num2 = substr($str2,5); if($num1 == $num2){
    return 0;
    }
    return ($num1 > $num2 )?'1':'-1';
    }
      

  2.   


    natsort($arr);//自然排序
    print_r($arr);
      

  3.   

    用natsort之后
    Array
    (
        [0] => page_1
        [4] => page_2
        [6] => page_3
        [5] => page_5
        [2] => page_11
        [1] => page_12
        [3] => page_22
    )index不是1,2,3.
    怎么办
      

  4.   


    <?php
    $a=array(3=>"Horse",4=>"Dog");
    print_r(array_merge($a));
    ?>输出:Array ( [0] => Horse [1] => Dog )