$arr=array('中','中国','中国人','中国人民')
怎么按照数组内元素的长度进行排序??

解决方案 »

  1.   

    function cmp($a,$b) {
        return mb_strlen($a) - mb_strlen($b);
    }
    $arr=array('中','中国','中国人','中国人民');
    usort($arr,'cmp');
    echo "<pre>\n";
    print_r($arr);
    echo "</pre>";
      

  2.   

    自定义的比较函数中用strlen()计算字符串长度也是安全的。
      

  3.   


    嗯,我还想知道你定义的cmp是啥意思,能否讲解一下思路??
      

  4.   

    http://cn.php.net/manual/zh/function.usort.php
      

  5.   

    用一个笨办法,按照从短到长<?php
    $arr=array('中','中国人','中国','中国人民');
    $nums=count($arr);
    for($i=0;$i<$nums;$i++)
    {
    $len[$i]=strlen($arr[$i]);
    }//arsort($len);//如果需要从长到短排序请取消这一句的注释,并注释下一个语句。
    asort($len);
    print_r($len);
    echo "<br>";
    $i=0;
    foreach($len as $key => $value){
    $new[$i]=$arr[$key];
    $i++;
    }
    print_r($new);
    ?>
      

  6.   

    <?php
    function sortByLength($arr) {
    $lens = array();
    foreach($arr as $str) {
    $lens[] = strlen($str);
    }
    // 你可以将SORT_ASC 换成 SORT_DESC,看效果
    array_multisort($lens, SORT_ASC, $arr); return $arr;
    }$arr=array('中','中国','中国人','中国人民');var_dump(sortByLength($arr));