suchen

Heim  >  Fragen und Antworten  >  Hauptteil

laravel - php条件判断中同时有"与、或",优先级是怎样的?

php条件判断中同时有"与、或",优先级是怎样的?

例如:

if ($article->user_id ==  Auth::id() && $article->status==0 || $article->expired_at < Carbon::now())
{
    $article->delete();
    return back();
}

if语句中有3个条件:

$article->user_id ==  Auth::id()      //文章属于该登录用户
$article->status==0                   //文章的status字段为0
$article->expired_at < Carbon::now()  //文章已过期

我想表达的是第1个条件要满足,第2、3个条件只要满足一个。

问题就是应该怎样写这个条件语句,上面if()代码中那样写对吗?

習慣沉默習慣沉默2778 Tage vor581

Antworte allen(5)Ich werde antworten

  • 怪我咯

    怪我咯2017-05-16 12:04:33

    根据PHP手册:运算符优先级页面显示,优先级是 >

    所以题主的代码可以这样写:

    $isAuthor = $article->user_id ==  Auth::id();
    $isValid = $article->status==0 || $article->expired_at < Carbon::now();
    
    if ($isAuthor && $isValid)
    {
        $article->delete();
        return back();
    }

    if的判断语句不要写得太长,阅读性不好;

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 12:04:33

    参考手册

    建议2、3个条件用括号扩起

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 12:04:33

    if(a && (b||c))
    {
        $article->delete();
        return back();
    }

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-05-16 12:04:33

    与的优先级大于或

    Antwort
    0
  • 漂亮男人

    漂亮男人2017-05-16 12:04:33

    if ($article->user_id ==  Auth::id() && ($article->status==0 || $article->expired_at < Carbon::now()))
    {
        $article->delete();
        return back();
    }
    
    

    Antwort
    0
  • StornierenAntwort