我有一个存储某些部分名称的数组,如a,b,c,每个部分都有类似' a' section包含q1,q2,q3。首先,我从myDB获取这些部分,然后传递这些部分ID以查找问题查询。
每个问题都有分数。现在我想要的是得分为0但有一些适用分数的问题。我一个接一个地想要这些部分和他们的问题。
这段代码工作正常。
见下文
<?php
$sectionIDs = $obj->getSectionIDs($formatID); //section ID array starting from 225
$sectionNames = $obj->getSectionNames($formatID);
for($i=0; $i<count($sectionIDs); $i++)
{
$section_name_print_check ="" ;
$question_ids = $obj->getQuestionID($formatID,$sectionIDs[$i]);
$questionName = $obj->getQuestionName($formatID,$sectionIDs[$i]);
for($j=0; $j<count($question_ids); $j++)
{
$score_achieved = $obj->getScore_least($question_ids[$j],$formatID,$last_waveID,$received_ID);
$score_applicable = $obj->getScore_least_applicabe($question_ids[$j],$formatID,$last_waveID,$received_ID);
if($score_achieved == 0 && $score_applicable != 0)
{
if($section_name_print_check == "" )
{
$final_result_arr[$k]["SectionName"] = $sectionNames[$i];
$section_name_print_check = $sectionNames[$j];
}
$final_result_arr[$k]["QuestionName"] = $questionName[$j];
$k++;
}
}
}
?>
但是在Retrieval中我遇到了一些问题,例如额外的表行。我怎样才能摆脱这个问题。我每次都得到第二次回音。我想要的是只有在新部分出现时才能得到这个回声。
检索代码:
for($i=0; $i<count($final_result_arr); $i++)
{
echo '<tr style="background-color:#6F6; font-weight:bold;"><td style="width:700px;" colspan="4">'.$final_result_arr[$i]["SectionName"].'</td></tr>';
echo '<tr><td style="width:15px;">Sr.</td><td width="399px"></td><td style="width:143px;" align="center">Achieved Score</td><td style="width:143px;" align="center">Applicable Score</td></tr>';
echo '<tr><td style="width:15px;">'.++$serial.'</td><td style="width:399px;">'.$final_result_arr[$i]["QuestionName"].'</td><td align="center" style="width:143px;">0%</td><td align="center" style="width:143px;">100%</td></tr>';
echo '<tr><td colspan="5" style="height:25px;"></td></tr>';
}
输出是:
这里我有额外的表行,而不是逐个部分和问题。 什么可能解决这个问题?我应该将我的数组更改为简单数组还是应该更改我的显示部分?任何帮助!在此先感谢
答案 0 :(得分:1)
首先,您的检索代码与输出图片不同,因为您的检索代码也会显示每个问题的绿色部分栏。
其次,我建议以不同的方式设置您的阵列。您目前的结构:
array[0] => (
array[0] => (['SectionName'] = "Skills Evaluation")
array[1] => (['QuestionName'] = "Did staff offer any other product?")
)
array[1] => (
array[0] => (['SectionName'] = "Skills Evaluation")
array[1] => (['QuestionName'] = "Was the conversation closed professionaly?")
)
这意味着每当您对每个部分有多个问题时,您都会多次存储部分名称。您当前的代码假定问题都将正确排序。如果您的数组没有正确排序,您的代码将不会显示每个部分的问题。
你可以选择一个结构,你可以将该部分用作带问题的数组的键。
$final_result_arr['SectionName'][$indexOfQuestion] = "Question";
array['Skills Evaluation'] => (
array['Skills Evaluation'][0] = "Question"
array['Skills Evaluation'][1] = "Another question"
)
array['Branch environment'] => (
array['Branch enviroment'][0] = "Question"
)
使用这样的结构,您可以像这样获取输出:
foreach ($final_result_arr as $section => $questions)
{
echo '<tr style="background-color:#6F6; font-weight:bold;"><td style="width:700px;" colspan="4">'.$section.'</td></tr>';
echo '<tr><td style="width:15px;">Sr.</td><td width="399px"></td><td style="width:143px;" align="center">Achieved Score</td><td style="width:143px;" align="center">Applicable Score</td></tr>';
foreach ($questions as $question)
{
echo '<tr><td style="width:15px;">'.++$serial.'</td><td style="width:399px;">'.$question.'</td><td align="center" style="width:143px;">0%</td><td align="center" style="width:143px;">100%</td></tr>';
echo '<tr><td colspan="5" style="height:25px;"></td></tr>';
}
}
你显然必须调整你的代码来填充数组,如果你想要存储已实现的和适用的分数,你可以改为将$ question一个数组并让它存储这些值。
填满阵列:
if($score_achieved == 0 && $score_applicable != 0)
{
$final_result_arr[$sectionName[$i]][] = $questionName[$j];
}
或者,如果你想要分数:
if($score_achieved == 0 && $score_applicable != 0)
{
$final_result_arr[$sectionName[$i]][] = array($questionName[$j], 'score', 'score');
}