为了账号安全,请及时绑定邮箱和手机立即绑定

php多个条件判断程序优化

php多个条件判断程序优化

PHP
呼啦一阵风 2019-03-10 07:34:25
开发的时候遇到个小问题,设置显示用户的名字,如果存在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; }
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

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,不管是否为空。所以建议还是使用数组,过滤空的,取第一个元素。

查看完整回答
反对 回复 2019-03-18
?
ITMISS

TA贡献1871条经验 获得超8个赞

你这个逻辑描述得...

$array = [
    'email' => '',
    'nick_name' => 'nick_name',
    'user_name' => 'user_name',
    'last_name' => 'last_name',
];
// 干掉所有空的
array_filter($array);
// 取出 $array 第一个元素(如果有的话)
查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 848 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信