2016-09-07 72 views
0

我一直在处理这段代码以返回一个布尔值,结果是变量被true或false覆盖,因为它寻找foreach语句中的一行。但是当我将它传递给我的视图文件时,没有值被采用/出现。你能帮助我为什么发生这种情况,我如何成功地通过布尔值?变量不返回布尔值yii 2

查看文件

echo TestController::Showprerequisites(29005); 

型号

$validator; 

foreach($prereq as $values){ 

if(FinishedSubjects::find()->where(['subjectname' => $values['col']])->exists()){ 
    $validator = true; 
} else { 
    $validator = false; 
} 

} 

return $validator; 

控制器

public function Showprerequisites($trno){ 
     $model = new TestModel(); 
     return $model->Showprerequisites($trno); 
    } 

编辑 查看更新

$preq = TestController::Showprerequisites(29005); 

if($preq = true){ 
    echo 'Pre requites completed/read'; 
} else if($preq = false) { 
    echo 'Pre requisites not completed/not read'; 
} 
+0

你尝试'回声假;''回声真实;'? –

+1

也许它不会在'foreach'中? –

+0

如果$ validator的值为false,如果回显则屏幕上不会显示任何内容,但如果为true,echo $ validator将在浏览器上显示为true –

回答

1

你的代码中有逻辑错误,你在if条件中赋值,然后检查,它总是返回true。

取而代之的是:

if($preq = true){ 

您可以检查也这样说:

if($preq){ // if $preq is true then this line will work.