现在有一个文本格式的文件,内容大概下面这样2006/5
name          pay1        pay2        re
wangli         300         150          ok
wangli         430         200           ok
zhaofeng       220         100          ok
duanli         100          200          ok
duanli          150          50           ok
weifeng         100         100            ok
liuyang         200          150            ok现在需要将name里相同的项合并,将后面的相关项相加,并按照pay1大小排序。然后生成一个用页面显示的表格,哪位大大能给写一下么。

解决方案 »

  1.   

    select * from 表名 where name limit 1 order by max(pay1) desc
    应该是这样
      

  2.   

    input.txt
    ---------------------
    wangli         300         150          ok
    wangli         430         200           ok
    zhaofeng       220         100          ok
    duanli         100          200          ok
    duanli          150          50           ok
    weifeng         100         100            ok
    liuyang         200          150            okinput_sort.php
    ---------------------
    <?php
    $afile = file("input.txt");
    foreach($afile as $line)
    {
         $line1 = trim(preg_replace("/(\s+)/", " ",$line));
         $aitem[] = explode(" ",$line1);
    }
    $aicount = count($aitem);
    for($i = 1; $i < $aicount - 1; $i++)
    {
    if($aitem[$i][0] == $aitem[$i - 1][0])
    {
    $aitem[$i - 1][1] = $aitem[$i - 1][1] + $aitem[$i][1];
    $aitem[$i - 1][2] = $aitem[$i - 1][2] + $aitem[$i][2];
    unset($aitem1[$i]);
    }
    }
    usort($aitem, 'sort_payl');
    print_r($aitem); function sort_payl($a,$b)
    {
    if($a[1]   ==   $b[1])   return   0;   
          return   $a[1]   >   $b[1]   ?   -1   :   1;
    }
    ?>
      

  3.   

    纠正:改unset($aitem1[$i]) 为unset($aitem[$i])
      

  4.   

    谢谢riyuezi
    可是执行的时候出错PHP Notice: Undefined offset: 2 in C:\Program Files\DzSoft\PHP Editor\php29E.tmp on line 22 似乎是在说if($aitem[$i][0] == $aitem[$i - 1][0])这一行里的什么下标没有定义的意思吧
    我自己修改了很久也没弄好
    你能帮着再看一下么
      

  5.   

    for($i = 1; $i < $aicount - 1; $i++)应为for($i = 1; $i < $aicount; $i++)
    另外,我经测试,运行正常,你执行出错,我不知道!