<?
$sql=$empire->query("select userid,username from {$dbtbpre}enewsmember where groupid=1 and checked=1");
while($ur=$empire->fetch($sql))
{
    $num=$empire->gettotal("select count(*) as total from phome_ecms_news where checked=1 and ismember=1 and userid='$ur[userid]'");
    echo $ur['userid'].$ur['username'].$num;
}
?>如何接照$num降序排序

解决方案 »

  1.   


    while($ur=$empire->fetch($sql))
    {
      $num[]=$empire->gettotal("select count(*) as total from phome_ecms_news where checked=1 and ismember=1 and userid='$ur[userid]'");
    }
    arsort($num);
    print_r($num);
      

  2.   


    $ur['userid'].$ur['username']
    这两个信息怎么对应输出?
      

  3.   


    $arr = array();
    while($ur=$empire->fetch($sql))
    {
      $arr['uid'][]=$ur['userid'];
      $arr['name'][]=$ur['username'];
      $arr['num'][]=$empire->gettotal("select count(*) as total from phome_ecms_news where checked=1 and ismember=1 and userid='$ur[userid]'");
    }
    arsort($arr['num']);
    print_r($arr['num']);
      

  4.   


    <?php
    $arr = array();
      $arr['uid'][]=1;
        $arr['uid'][]=2;
          $arr['uid'][]=3;
            $arr['uid'][]=4;
              $arr['uid'][]=5;
                $arr['uid'][]=6;
      $arr['name'][]='a1';
        $arr['name'][]='a2';
          $arr['name'][]='a3';
            $arr['name'][]='a4';
              $arr['name'][]='a5';
                $arr['name'][]='a6';
      $arr['num'][]=5;
        $arr['num'][]=50;
          $arr['num'][]=60;
            $arr['num'][]=10;
              $arr['num'][]=66;
                $arr['num'][]=44;arsort($arr['num']);
    arsort($arr['name']);
    arsort($arr['uid']);
    echo '<pre>';
    print_r($arr['num']);
    echo '<pre>';
    ?>输出 时怎么按 $arr['num']排序后的输出?
      

  5.   

    <?php
    $arr = array();
    $arr['uid'][]=1;
    $arr['uid'][]=2;
    $arr['uid'][]=3;
    $arr['uid'][]=4;
    $arr['uid'][]=5;
    $arr['uid'][]=6;
    $arr['name'][]='a1';
    $arr['name'][]='a2';
    $arr['name'][]='a3';
    $arr['name'][]='a4';
    $arr['name'][]='a5';
    $arr['name'][]='a6';
    $arr['num'][]=5;
    $arr['num'][]=50;
    $arr['num'][]=60;
    $arr['num'][]=10;
    $arr['num'][]=66;
    $arr['num'][]=44;
    arsort($arr['num']);
    $aa=array_keys($arr['num']);
    for($i=0;$i<count($aa);$i++)
    {
    echo $arr['num'][$aa[$i]]."\r\n";
    echo $arr['name'][$aa[$i]]."\r\n";
    echo $arr['uid'][$aa[$i]]."\r\n";
    }
    ?>这样应该可以吧
      

  6.   

    while($ur=$empire->fetch($sql))
    {
      $num[]=$empire->gettotal("select count(*) as total from phome_ecms_news where checked=1 and ismember=1 and userid='$ur[userid]'");
      $ar[]=array('userid'=>$ur['userid'],'username'=>$ur['username'],'num'=>$num);
    }
    array_multisort($num,SORT_DESC,$ar) ;
    foreach($ar as $v) echo implode('',$v).'<br>';
      

  7.   


    $arr['uid'] = array(1,2,3,4,5,6);
    $arr['name'] = array('a1','a2','a3','a4','a5','a6');
    $arr['num'] = array(5,50,60,10,66,44);
    asort($arr['num']);
    $key = array_keys($arr['num']);
    function sort_arr($key,$arr){
    foreach($key as $ky){
    foreach($arr as $k=>$val){
    if($ky==$k)$tmp[]=$val;
    }
    }
    return $tmp;
    }
    $arrName = sort_arr($key,$arr['name']);
    $arrId = sort_arr($key,$arr['uid']);
    print_r($key);echo "<br>";
    print_r($arrName);echo "<br>";
    print_r($arrId);echo "<br>";
    #Array ( [0] => 0 [1] => 3 [2] => 5 [3] => 1 [4] => 2 [5] => 4 )
    #Array ( [0] => a1 [1] => a4 [2] => a6 [3] => a2 [4] => a3 [5] => a5 )
    #Array ( [0] => 1 [1] => 4 [2] => 6 [3] => 2 [4] => 3 [5] => 5 )
      

  8.   

    这样更清晰:$arr['uid'] = array(1,2,3,4,5,6);
    $arr['name'] = array('a1','a2','a3','a4','a5','a6');
    $arr['num'] = array(5,50,60,10,66,44);
    arsort($arr['num']);
    $key = array_keys($arr['num']);
    function sort_arr($key,$arr){
    foreach($key as $ky){
    foreach($arr as $k=>$val){
    if($ky==$k)$tmp[]=$val;
    }
    }
    return $tmp;
    }
    $arrName = sort_arr($key,$arr['name']);
    $arrId = sort_arr($key,$arr['uid']);
    echo "key-->>";print_r($key);echo "<br>";
    #key-->>Array ( [0] => 4 [1] => 2 [2] => 1 [3] => 5 [4] => 3 [5] => 0 )
    echo "name-->>";print_r($arrName);echo "<br>";
    echo "id-->>";print_r($arrId);echo "<br>";
    echo "num-->>";print_r($arr['num']);echo "<br>";
    #name-->>Array ( [0] => a5 [1] => a3 [2] => a2 [3] => a6 [4] => a4 [5] => a1 )
    #id-->>Array ( [0] => 5 [1] => 3 [2] => 2 [3] => 6 [4] => 4 [5] => 1 )
    #num-->>Array ( [4] => 66 [2] => 60 [1] => 50 [5] => 44 [3] => 10 [0] => 5 )
      

  9.   

    to #8 php 已经提供了强大的函数,为什么不用?
    $arr['uid'] = array(1,2,3,4,5,6);
    $arr['name'] = array('a1','a2','a3','a4','a5','a6');
    $arr['num'] = array(5,50,60,10,66,44);
    array_multisort($arr['num'], $arr['name'], $arr['uid']);
    print_r($arr);Array
    (
        [uid] => Array
            (
                [0] => 1
                [1] => 4
                [2] => 6
                [3] => 2
                [4] => 3
                [5] => 5
            )    [name] => Array
            (
                [0] => a1
                [1] => a4
                [2] => a6
                [3] => a2
                [4] => a3
                [5] => a5
            )    [num] => Array
            (
                [0] => 5
                [1] => 10
                [2] => 44
                [3] => 50
                [4] => 60
                [5] => 66
            ))
      

  10.   

    >re:#9
    array_multisort()会改变uid、name和num之间的依存关系。
    比如:$arr['uid'] = array(1,2,3,4,5,6);
    $arr['name'] = array('a1','a2','a3','a4','a5','a6');
    $arr['num'] = array(5,50,60,10,66,44);#当uid=5时,name=a5,num=66我也想到了#6的方法:while($ur=$empire->fetch($sql))
    {
      $num[]=$empire->gettotal("select count(*) as total from phome_ecms_news where checked=1 and ismember=1 and userid='$ur[userid]'");
      $arr[]=array('userid'=>$ur['userid'],'username'=>$ur['username'],'num'=>$num);
    }
    print_r($arr);
    #Array ( [0] => Array ( [uid] => 1 [name] => a1 [num] => 5 ) [1] => Array ( [uid] => 2 [name] => a2 [num] => 50 ) [2] => Array ( [uid] => 3 [name] => a3 [num] => 60 ) [3] => Array ( [uid] => 4 [name] => a4 [num] => 10 ) [4] => Array ( [uid] => 5 [name] => a5 [num] => 66 ) [5] => Array ( [uid] => 6 [name] => a6 [num] => 44 ) ) 
    #这时,按num降序,array_multisort()就不会用了,所以就改用了#8的方法。望指教!
      

  11.   

    本帖最后由 xuzuning 于 2012-06-30 19:15:08 编辑
      

  12.   

    re:#11
    后来测试了一下,确实没有改变依存关系,当时我在array_multisort()的参数没有添加正确,谢谢指教。