大家上午/下午好,
我遇到了一个奇怪的问题,我的foreach循环中有一个似乎是在记忆最后一个循环中的变量。
下面是有问题的循环:
foreach($result as $obj) {
$S_MatterNum = $obj['matter_num'];
$S_SurveyName = $obj['longname'];
$D_DateSubmit = new datetime($obj['date_submit']);
$D_DateComp = new datetime ($obj['date_complete']);
echo "<tr id=" . $S_MatterNum . ">";
echo '<td>' . $S_MatterNum . '</td>';
echo '<td>' . $S_SurveyName . '</td>';
echo '<td>' . $D_DateSubmit->format('d/m/Y') . ' & '. $D_DateComp->format('d/m/Y') .'</td>';
if (!isset($D_DateComp)){
$D_DateComp = 'Not Completed Yet';
echo '<td>' . $D_DateComp . '</td>';
echo '<td></td>';
} else {
echo '<td>' . $D_DateComp->format('d/m/Y'). '</td>';
echo '<td><button onclick="pullsurvey('.$S_MatterNum.')">Pull</button></td>';
}
echo "</tr>";
}
我遇到的问题是$d\u datecomp变量。循环从以下内容获取其信息:
$SQL = "SELECT * FROM survey_list INNER JOIN survey_names ON survey_list.survey_name = survey_names.shortname";
$result = mysqli_query($con,$SQL);
if ($result === false) {
echo("Error: " . $SQL . "<br>" . $con->error);
}
if (mysqli_num_rows($result) == 0) {
$result = mysqli_fetch_all($result,MYSQLI_ASSOC);
}
现在,如果表中的date\u complete列为null(调查尚未完成),则$d\u datecomp将被设置为最后一个非null值,而不是设置为null,因此可以将其设置为5个循环前的$d\u datecomp值。
这是由我从数据库中取出信息的方式造成的,还是由我在信息取出后处理信息的方式造成的?
如果上面是有点太神秘,我可以尝试解释所有单独的部分,并提供截图。
1条答案
按热度按时间jyztefdp1#
您正在示例化一个没有任何条件的datetime示例:
然后检查是否设置了此变量: