新手求教php中多维数组的读取

cherryhood 2013-07-05 12:58:09

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

...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
一起混吧 2013-07-05
  • 打赏
  • 举报
回复
基本代码,样式自己扩展。
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>";
cherryhood 2013-07-05
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
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 ) )
版主您好,如果我只是想把题目中的数组按一楼图示的表格方式输出到屏幕,不知如何才能逐条读取数组中的所有元素并逐条输出?再谢
cherryhood 2013-07-05
  • 打赏
  • 举报
回复
多谢楼上各位的指导。

如果我只是想把题目中的数组按下图的方式输出到屏幕,不知如何才能逐条读取数组中的所有元素并逐条输出?再谢。
一起混吧 2013-07-05
  • 打赏
  • 举报
回复
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
xuzuning 2013-07-05
  • 打赏
  • 举报
回复
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 ) )

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧