laravel - php条件判断中同时有"与、或",优先级是怎样的?
習慣沉默
習慣沉默 2017-05-16 12:02:33
[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()代码中那样写对吗?

習慣沉默
習慣沉默

全部回复(5)
怪我咯

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

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

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

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

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

仅有的幸福

参考手册

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

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

与的优先级大于或

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号