如果语句永远不会计算为true(即使它应该)

时间:2016-09-22 14:23:11

标签: php laravel

我创建了一个if语句“if($ user_roles == 3)”并且这个$ user_roles的值为“3”,条件应为true但结果始终为false。

这是我的代码:

Unfold Toplevel Nodes

4 个答案:

答案 0 :(得分:3)

$user_roles不是3,永远不会。这是一个阵列。 但是,它的内容可以是三个。

尝试:

if(in_array(3, $user_roles)) { ...}

供参考:in_array

答案 1 :(得分:1)

$user_roles是一个数组。所以你的if语句总是错误的。

答案 2 :(得分:0)

我想,试试这个。

foreach ($user_id as $id) {
    array_push($user_roles, array('role' => $id->role));
}/*
dd($user_roles);*/

foreach ($user_roles as $user_role) {
if ($user_role['role'] == 3) {
    $orga = Organization::where('orga_id','=',$sponsor_id)->get();
    dd($orga);
    return view('pages.Ngo.View-Sponsor-Information',compact('orga'));
}else{
    $indi = Individual::where('indi_id','=',$sponsor_id)->get();
    dd($indi);
    return view('pages.Ngo.View-Sponsor-Information',compact('indi'));
}
}

foreach ($user_id as $id) {
    array_push($user_roles, array('role' => $id->role));
}/*
dd($user_roles);*/

foreach ($user_roles as $user_role) {
if ($user_role->role == 3) {
    $orga = Organization::where('orga_id','=',$sponsor_id)->get();
    dd($orga);
    return view('pages.Ngo.View-Sponsor-Information',compact('orga'));
}else{
    $indi = Individual::where('indi_id','=',$sponsor_id)->get();
    dd($indi);
    return view('pages.Ngo.View-Sponsor-Information',compact('indi'));
}
}     

在尝试过这个之后请说些什么。

答案 3 :(得分:0)

根据您显示的功能判断ViewSponsorInfo()的名称只对检测此用户是否具有唯一的角色' 3'在您的数据库中。

我的意思是结果是二元不是吗?要么它们是3,要么它们不是,不需要通过结果循环。

$user_id = User::where('id','=',$id)->get();
if($user_id[0] !== 3 ) {  //***
  doSponsorLink();
}else{
  doNonSponsorLink();
}

我不熟悉Laravel或您正在使用的数据库层,所以也许只是if($user_id)

未经测试,在这里我假设用户只能拥有1个单一角色,而我们似乎没有为数据库中不存在的用户提供补贴。