开发的时候遇到个小问题,设置显示用户的名字,如果存在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,不管是否为空。所以建议还是使用数组,过滤空的,取第一个元素。
ITMISS
TA贡献1871条经验 获得超8个赞
你这个逻辑描述得...
$array = [
'email' => '',
'nick_name' => 'nick_name',
'user_name' => 'user_name',
'last_name' => 'last_name',
];
// 干掉所有空的
array_filter($array);
// 取出 $array 第一个元素(如果有的话)
- 2 回答
- 0 关注
- 848 浏览
添加回答
举报
0/150
提交
取消