本人是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
$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
))
$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
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>";