本帖最后由 laiyilong 于 2012-12-23 06:26:55 编辑

解决方案 »

  1.   

    if(isset($_GET['img'])) {
      die(file_get_contents("http://id.qq.com/level/img/$_GET[img].png"));
    }
    $a = base_convert(85,10,4); //85为数字等级
    $b = array(1=>'star',2=>'moon',3=>'sun',4=>'crown');
    $e = strlen($a);
    for($i=0;$i<$e;$i++){
        $c = (int)substr($a,$i,1);
        if($c>0) for($d=0;$d<$c;$d++) echo '<img src="?img='.$b[$e-$i].'" />';
    }
      

  2.   


    为什么要把东西写的那么复杂,。。<?php
    function qqdj($nowlevel)
    {
    /*星星1 月亮4 太阳16 皇冠64 */
    $a = $b = $c = $d = 0; 
    $d = floor($nowlevel/64);
    $dj= $nowlevel%64;
    $c = floor($dj/16);
    $dj = $dj%16;
    $b = floor($dj/4);
    $a = $dj%4;
    return array($a,$b,$c,$d);
    }
    $dj = 37;
    $dj = 71;
    $arr = qqdj($dj);
    print_r($arr);
      

  3.   


    <?php
    function qqdj($nowlevel)
    {
    /*星星1 月亮4 太阳16 皇冠64 */
    $a = $b = $c = $d = 0; 
    $d = floor($nowlevel/64);
    $dj= $nowlevel%64;
    $c = floor($dj/16);
    $dj = $dj%16;
    $b = floor($dj/4);
    $a = $dj%4;
    return array($a,$b,$c,$d);
    }function qqdjImg($nowlevel)
    {
    /*星星1 月亮4 太阳16 皇冠64 */
    $arrDJ = array();
    $arrDJ[] = floor($nowlevel/64);
    $dj= $nowlevel%64;
    $arrDJ[] = floor($dj/16);
    $dj = $dj%16;
    $arrDJ[] = floor($dj/4);
    $arrDJ[] = $dj%4;

    $arrImg = array(
    '<img src="http://id.qq.com/level/img/crown.png" />',
    '<img src="http://id.qq.com/level/img/sun.png" />',
    '<img src="http://id.qq.com/level/img/moon.png" />',
    '<img src="http://id.qq.com/level/img/star.png" />',
    );
    $html = '';
    foreach ($arrDJ as $k => $v) 
    {
    $html .= str_repeat($arrImg[$k],$v);
    }

    print_r($arrDJ);
    return  $html;
    }$dj = 37;
    $dj = 71;
    echo qqdjImg($dj);/*
    X-Powered-By: PHP/5.2.0
    Content-type: text/htmlArray
    (
        [0] => 1
        [1] => 0
        [2] => 1
        [3] => 3
    )
    <img src="http://id.qq.com/level/img/crown.png" /><img src="http://id.qq.com/level/img/moon.png" /><img src="http://id.qq.com/level/img/star.png" /><img src="http://id.qq.com/level/img/star.png" /><img src="http://id.qq.com/level/img/star.png" />
    */
      

  4.   


    貌似用base_convert比floor要简单些,虽然返回的是字符串,你的是数组。更正一下图片地址,这只是讨论这个代码的实现,至于怎么采集等级不在讨论范围,比如一些论坛也有类似的等级显示,用我的代码的话只需要在图片数组里添加5、6、7这样就可以处理更高的等级了,而你的代码就需要添加128、256这样取整。http://id3.idqqimg.com/id/level/img/crown.png  皇冠
    http://id3.idqqimg.com/id/level/img/sun.png  太阳
    http://id3.idqqimg.com/id/level/img/moon.png  月亮
    http://id3.idqqimg.com/id/level/img/star.png  星星
      

  5.   

    重新改进了一下:$a = base_convert(85,10,4); //85为数字等级
    $b = array('star','moon','sun','crown');
    $e = strlen($a);
    for($i=0;$i<$e;$i++) echo str_repeat('<img src="http://id3.idqqimg.com/id/level/img/'.$b[$e-$i-1].'.png" />',(int)substr($a,$i,1));
    这次复制直接运行就可以正常显示了