php中的if语句能不能嵌套,php – 这些嵌套的if / elseif语句有什么更优雅的解决方案?...

我正在构建一个包含用户个人资料的用户的网站.配置文件中的许多字段都是可选的.

有很多用户生成内容的机会,因此我需要在网站的许多不同位置(评论,帖子等)显示此内容的作者.在用户的个人资料中,他能够(可选地)填写他的“名字”,他的“姓氏”和“显示名称”.

为了显示作者,我编写了一个帮助器方法,该方法查看这些字段的提供数组,并按此优先顺序返回用户最合适的名称:

>如果用户填写了display_name,则会显示.

>如果用户填写了first_name和last_name,但没有显示display_name,则会显示这两个名称

>如果用户只填写first_name,它将显示first_name.

>如果用户只填写last_name,它将显示last_name.

>如果所有其他方法都失败,将显示用户ID,即user123

>如果没有数组键,或者参数为NULL,则名称将显示为NULL

该方法效果很好,但很难看.必须有一种方法来替代嵌套的if / else语句来美化它.

public function nameify($names = NULL) {

$name = '';

if (!empty($names)) {

if (!empty($names['display_name'])) {

$name = $names['display_name'];

} elseif (!empty($names['first_name'])) {

$name = $names['first_name'];

if (!empty($names['last_name'])) {

$name .= ' ' . $names['last_name'];

}

} elseif (!empty($names['last_name'])) {

$name = $names['last_name'];

}

if (empty($name) && !empty($names['id'])) {

$name = 'user' . $names['id'];

} else {

$name = 'NULL';

}

} else {

$name = 'NULL';

}

return $name;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值