本人是php新手,对多维数组的取值很感棘手,请前辈帮忙:要求根据三科的总分输出排名次的成绩单, 如图:多维数组如下:
<?php
$row0 = array("语文"=>66, "英语"=>73, "数学"=>56);
$row1 = array("语文"=>72, "英语"=>63, "数学"=>63);
$row2 = array("语文"=>60, "英语"=>88, "数学"=>72);
$row3 = array("语文"=>58, "英语"=>77, "数学"=>47);
$row4 = array("语文"=>67, "英语"=>85, "数学"=>83);
$row5 = array("语文"=>73, "英语"=>81, "数学"=>91);
$grades = array("Rachel"=>$row0, "Monica"=>$row1, "Phoebe"=>$row2, "Joey"=>$row3, "Chandler"=>$row4, "Ross"=>$row5);
?>PHParray

解决方案 »

  1.   

    row0 = array("语文"=>66, "英语"=>73, "数学"=>56);
    $row1 = array("语文"=>72, "英语"=>63, "数学"=>63);
    $row2 = array("语文"=>60, "英语"=>88, "数学"=>72);
    $row3 = array("语文"=>58, "英语"=>77, "数学"=>47);
    $row4 = array("语文"=>67, "英语"=>85, "数学"=>83);
    $row5 = array("语文"=>73, "英语"=>81, "数学"=>91);
    $grades = array("Rachel"=>$row0, "Monica"=>$row1, "Phoebe"=>$row2, "Joey"=>$row3, "Chandler"=>$row4, "Ross"=>$row5);foreach($grades as $k=>$item) {
      $grades[$k]['总分'] = $t[$k] = array_sum($item);
    }
    array_multisort($t, SORT_DESC, $grades);
    print_r($grades);Array
    (
        [Ross] => Array
            (
                [语文] => 73
                [英语] => 81
                [数学] => 91
                [总分] => 245
            )    [Chandler] => Array
            (
                [语文] => 67
                [英语] => 85
                [数学] => 83
                [总分] => 235
            )    [Phoebe] => Array
            (
                [语文] => 60
                [英语] => 88
                [数学] => 72
                [总分] => 220
            )    [Monica] => Array
            (
                [语文] => 72
                [英语] => 63
                [数学] => 63
                [总分] => 198
            )    [Rachel] => Array
            (
                [语文] => 66
                [英语] => 73
                [数学] => 56
                [总分] => 195
            )    [Joey] => Array
            (
                [语文] => 58
                [英语] => 77
                [数学] => 47
                [总分] => 182
            ))
      

  2.   

    foreach($grades as $k=> $v) $ar[$k]=array_sum($v);arsort($ar);
    $keys=array_flip($ar);function cmp($a, $b)
    {
        return array_sum($b) - array_sum($a) ;
    }
    usort($grades, "cmp");
    $grades=array_combine($keys,$grades);
    print_r($grades);
    foreach($grades as $k=> $v)
        echo $k. ' = ' . array_sum($v)."\n";
    Array
    (
        [Ross] => Array
            (
                [语文] => 73
                [英语] => 81
                [数学] => 91
            )    [Chandler] => Array
            (
                [语文] => 67
                [英语] => 85
                [数学] => 83
            )    [Phoebe] => Array
            (
                [语文] => 60
                [英语] => 88
                [数学] => 72
            )    [Monica] => Array
            (
                [语文] => 72
                [英语] => 63
                [数学] => 63
            )    [Rachel] => Array
            (
                [语文] => 66
                [英语] => 73
                [数学] => 56
            )    [Joey] => Array
            (
                [语文] => 58
                [英语] => 77
                [数学] => 47
            ))
    Ross = 245
    Chandler = 235
    Phoebe = 220
    Monica = 198
    Rachel = 195
    Joey = 182
      

  3.   

    基本代码,样式自己扩展。
    echo "<table width='650px'>";
    echo "<tr><th>名字</th><th>语文</th><th>英语</th><th>数学</th></tr>";
    foreach($grades as $i=>$item){
          echo "<tr>";
      echo "<td>$i</td>";
      foreach($item as $v) echo "<td>$v</td>";
      echo "</tr>";
    }
    echo "</table>";