猿问

php多个条件判断程序优化

开发的时候遇到个小问题,设置显示用户的名字,如果存在first_name,last_name就显示last_name.first_name,如果不存在first_name,就判断是否存在user_name,再判断nick_name,再判断email,只用以上顺序最先出现的。例如如果用户信息里面有first_name.last_name就不执行后面的判断了,就直接取出,类似下面这个逻辑。php7语法也可以。

    {
        if (@$_SERVER["HTTP_X_FORWARDED_FOR"]) {
            $ip = @$_SERVER["HTTP_X_FORWARDED_FOR"];
        } elseif (@$_SERVER["HTTP_CLIENT_IP"]) {
            $ip = @$_SERVER["HTTP_CLIENT_IP"];
        } elseif (@$_SERVER["REMOTE_ADDR"]) {
            $ip = @$_SERVER["REMOTE_ADDR"];
        } elseif (getenv("HTTP_X_FORWARDED_FOR")) {
            $ip = getenv("HTTP_X_FORWARDED_FOR");
        } elseif (getenv("HTTP_CLIENT_IP")) {
            $ip = getenv("HTTP_CLIENT_IP");
        } elseif (getenv("REMOTE_ADDR")) {
            $ip = getenv("REMOTE_ADDR");
        } else {
            $ip = "";
        }
        return $ip;
    }
呼啦一阵风
浏览 849回答 2
2回答

慕工程0101907

php7里面可以运用以下语法。 <?php // $user_name = 'user_name'; $nick_name = 'nick_name'; $user = $user_name ?? $nick_name ?? $nick_name ?? $email; echo "<pre>"; print_r($user); echo "</pre>"; exit; 不是php7的话,可以按照需要的顺序组成一个数组,剔除空值后,取第一个元素。 这个方法有问题,??只判断是否有set,不管是否为空。所以建议还是使用数组,过滤空的,取第一个元素。

ITMISS

你这个逻辑描述得... $array = [ 'email' => '', 'nick_name' => 'nick_name', 'user_name' => 'user_name', 'last_name' => 'last_name', ]; // 干掉所有空的 array_filter($array); // 取出 $array 第一个元素(如果有的话)
随时随地看视频慕课网APP
我要回答