我遇到了嵌套的foreach循环问题,我的控制器代码在我的数据库的单独表中检索两列的值 .
我想要的是将每个值与另一个表进行比较,反之亦然,......
table1 table2
some column1 some column2
a b
b b
c c
我想要的输出是两列的值比较,如果是,则输出“匹配”,否则“不匹配” .
这里尝试,但它不起作用,只比较两个表列中的最后一项 . 我想我的嵌套循环缺少了 .
/// ///片段
controller
$temp_answers = array();
$answers = array();
$temp_answers = Tempanswer::where('subject_id', $subject_id)
->where('student_id', $student_id)
->lists('temp_answer');
$answers = Question::where('subject_slug', $subject->slug)
->lists('letteranswer');
foreach ($temp_answers as $temp_answer) {
foreach ($answers as $answer) {
if($answer == $temp_answer){
$flag = 'match';
}else
$flag = 'mismatch';
}
echo $flag.' ';
}
2 回答
CMIIW . 你想检查table1和table2是否匹配 . 所以,如果它不匹配,你会得到消息“不匹配”
Assumption 1 :如果将table1中的每个数据与table2中的所有数据进行比较 .
Assumption 2 :每行比较每一行 . 我的意思是将row1 table1与row1 table2进行比较,并将row2 table1与row2 table2进行比较 .
好吧,我会这样做的 .
首先给出变量名称,以帮助您了解其中的内容
第二个总是在
if else
中使用{}
,即使if
或else
中只有一行,它也可以更容易地看到实际开始和结束的位置 .然后总是使用缩进,这样您就可以直观地看到代码块的开始和结束位置 . 请记住,您可能需要在编写代码后的几周内回复一段代码,因此您可以轻松阅读,因为您可能需要了解您的工作 .
此外,当您输出有关匹配或不匹配的信息时,还需要包含您需要查看的数据,以便判断匹配是否正确 . 然后,如果它没有做你想要的,你可以很容易地看到什么是错的 .