laravel - Il y a "et, ou" dans le jugement conditionnel PHP en même temps. Quelle est la priorité?
習慣沉默
習慣沉默 2017-05-16 12:02:33
0
5
569

Il y a des « et, ou » dans le jugement conditionnel PHP en même temps. Quelle est la priorité ?

Par exemple :

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

Il y a 3 conditions dans l'instruction if :

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

Ce que je veux exprimer, c'est que la première condition doit être remplie, et qu'une seule des deuxième et troisième conditions doit être remplie.

La question est de savoir comment écrire cette instruction conditionnelle. Est-il correct de l'écrire comme dans le if() code ci-dessus ?

習慣沉默
習慣沉默

répondre à tous(5)
刘奇

Selon le manuel PHP : la page de priorité de l'opérateur indique que la priorité est et > >

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

$isAuthor = $article->user_id ==  Auth::id();
$isValid = $article->status==0 || $article->expired_at < Carbon::now();

if ($isAuthor && $isValid)
{
    $article->delete();
    return back();
}

ifDonc le code du sujet peut s'écrire ainsi :

rrreee 🎜La déclaration de jugement de if ne doit pas être trop longue, car elle ne sera pas lisible ;🎜
仅有的幸福

Manuel de référence

Il est recommandé de développer les conditions 2 et 3 entre parenthèses

phpcn_u1582
if(a && (b||c))
{
    $article->delete();
    return back();
}
世界只因有你

et a une priorité supérieure à ou

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal