我的嵌套foreach循环有问题,我的控制器代码检索数据库中单独表中两列的值。

我想要的是将每个值与另一个表进行比较,反之亦然,...

table1             table2
some column1       some column2
 a                  b
 b                  b
 c                  c


我想要的输出将是两列的值是否比较,如果为true,则输出“ match”,否则输出“ mismatch”。

在此尝试,但不起作用,仅对两个表列中的最后一项进行比较。我想我的嵌套循环不见了。

///摘要///

控制者

$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.' ';

 }

最佳答案

CMIIW。
您要检查table1和table2是否匹配。因此,如果不匹配,您将收到消息“不匹配”

假设1:是否将表1中的每个数据与表2中的所有数据进行比较。

foreach ($temp_answers as $temp_answer) {

    foreach ($answers as $answer) {
        if($answer == $temp_answer){
            $flag = 'match';
        }else {
            $flag = 'mismatch';
            break;
        }
    }

    if($flag == 'mismatch'){
        break;
    }
 }

echo $flag;


假设2:每行比较每个表。我的意思是将row1 table1与row1 table2比较,然后将row2 table1与row2 table2比较。

$flag='';
foreach ($temp_answers as $key1=>$temp_answer) {
    foreach ($answers as $key2=>$answer) {
        if($key1 == $key2){
            if($answer == $temp_answer){
                $flag = $flag.'match ';
            }else {
                $flag = $flag.'mismatch ';
            }
            break;
        }
    }
}
echo $flag;

关于php - 嵌套的foreach循环,带有php和laravel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32287577/

10-16 06:19