来自数组的PHP交叉表格式
嗨,我有一个像这样的PHP数组来自数组的PHP交叉表格式,php,arrays,crosstab,Php,Arrays,Crosstab,嗨,我有一个像这样的PHP数组 $table=array(); $subject_names=array(); $subject_names[118]="English"; $subject_names[108]="Software Engeneering"; $table['Josh'][118]['int'] =55; $table['Josh'][118]['ext'] = 10; $table['Josh'][108]['int'] =45; $table['Josh'][108][
$table=array();
$subject_names=array();
$subject_names[118]="English";
$subject_names[108]="Software Engeneering";
$table['Josh'][118]['int'] =55;
$table['Josh'][118]['ext'] = 10;
$table['Josh'][108]['int'] =45;
$table['Josh'][108]['ext'] = 12;
$table['Matt'][118]['int'] =45;
$table['Matt'][118]['ext'] = 12;
$table['Matt'][108]['int'] =50;
$table['Matt'][108]['ext'] = 15;
student | English | Software Engeneering |
| int. mark | ext. mark | int. mark | ext. mark |
___________________________________________________________
Josh | 55 | 10 | 45 | 12
Matt | 45 | 12 | 50 | 15
这里118和108是主题id,我正试图这样格式化它
$table=array();
$subject_names=array();
$subject_names[118]="English";
$subject_names[108]="Software Engeneering";
$table['Josh'][118]['int'] =55;
$table['Josh'][118]['ext'] = 10;
$table['Josh'][108]['int'] =45;
$table['Josh'][108]['ext'] = 12;
$table['Matt'][118]['int'] =45;
$table['Matt'][118]['ext'] = 12;
$table['Matt'][108]['int'] =50;
$table['Matt'][108]['ext'] = 15;
student | English | Software Engeneering |
| int. mark | ext. mark | int. mark | ext. mark |
___________________________________________________________
Josh | 55 | 10 | 45 | 12
Matt | 45 | 12 | 50 | 15
我试过了
echo "Student Name\t";
foreach($subject_names as $sub_name)
{
echo "$sub_name\t";
}
echo "<br>";
foreach($table as $sname => $subjects){
echo "$sname\t";
foreach($subjects as $subject_name => $types)
{
foreach($types as $marks)
{
echo "$marks\t";
}
}
echo "<br>";
}
它不会给出正确的结果。是否有任何方法确保结果始终正确
感谢您的帮助和建议这是我根据您的要求编写的解决方案,使用
$subject\u names
作为控制而不是学生的分数表来选择分数(我希望您在查看代码后明白我的意思)
这是上面脚本的输出
Student Name Software Engeneering English
Josh 45 12 55 10
Matt 50 15 45 12
通过问题中提供的脚本运行相同的数据,以下是输出(扭曲)
附言:“工程”应该是“工程”
我希望我能帮上忙。
干杯 我假设默认情况下,您不是硬编码这些值,而是从数据库中提取?这里的问题是,您的代码期望一切都处于完美的状态。如果你想把东西弄乱,你需要先把它分类。若你们希望发生这种情况,那个么若你们需要,我会很乐意提供更多的帮助。是的,我正从数据库中提取这些值。我将非常感谢您的任何帮助。好的,所以您只需要确保您正确排序您的数据库值。。。i、 e.
按学生、班级id、标记类型排序
更正数据顺序对他没有帮助。问题是什么时候数据出现问题。请阅读代码。。。我重新排列了数据,以表明我的算法不受数据顺序的影响,没有纠正它。对您不了解的内容进行向下投票并不好@AugwaI猜测它是可行的,但这仍然是一个糟糕的答案:)3个嵌套的foreach循环,这将以指数方式获得糟糕的性能。考虑哈佛大学2016。22000名学生,8000门课程,每个学生6门课程。1056000000次迭代。已接受。但发问者并没有说性能是他的问题,他显然在他的样本@Augwa中使用了三个嵌套的foreach循环
Student Name Software Engeneering English
Josh 55 10 45 12
Matt 45 12 50 15