php if 判断的问题。
怪我咯
怪我咯 2017-04-10 17:14:31
[PHP讨论组]

有一段php的判断大家看看有没有更简洁的写法,或者别的方式可以实现

$cat_id = 0;
if(empty($a)){
    if(empty($b)){
        if(empty($c)){
            return 0;
            exit();
        }else{
            $cat_id = $c;
        }
    }else{
        $cat_id = $b;
    }
}else{
    $cat_id = $a;
}
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(9)
PHP中文网
$cat_id = $a ?: $b ?: $c ?: 0;
//对PHP版本有要求
巴扎黑

喜欢这么写,没有嵌套

$cat_id = 0;

if($a) {
    $cat_id = $a;
    return;
}

if($b) {
    $cat_id = $b;
    return;
}

if($c) {
    $cat_id = $c;
    return;
}

return;
黄舟

$cat_id = $a ? $a : ($b ? $b : ($c ? $c : 0));

黄舟
$cat_id = 0;
if (!empty($a)) {
    $cat_id = $a;
} elseif (!empty($b)) {
    $cat_id = $b;
} elseif (!empty($c)) {
    $cat_id = $c;
} else {
    return 0;
}
迷茫
function test($a, $b, $c)
{
    if (empty($a)) {
        if (empty($b)) {
            if (empty($c)) {
                return 0;
            }
            return $c;
        }
        return $b;
    }
    return $a;
}

$cat_id = test($a, $b, $c);
伊谢尔伦

应该是没有更简单的写法了,但是可以优化成

$cat_id = 0;
if (! empty($c)) $cat_id = $c;
if (! empty($b)) $cat_id = $b;
if (! empty($a)) $cat_id = $a;
if (empty($cat_id)) exit;
大家讲道理
    function checkEmpty($a, $b = '', $c = ''){
        if(empty($b) && empty($c)) exit();
        return empty($a) ? checkEmpty($b,$c) : $a;
    }

这个应该够简洁了!

伊谢尔伦
$cat_id = 0;
while(1){
    if(empty($a)){
        $cat_id = $a;
        break;
    }
    if(empty($b)){
        $cat_id = $b;
        break;
    }
    if(empty($c)){
        $cat_id = $c;
        break;
    }
}
PHP中文网

不写嵌套就行了

可读性强

以简驭繁

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

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