在PHP 7中,如何将我的网站的基本三元函数转换为合并?

时间:2017-04-03 17:36:15

标签: php ternary-operator coalescing

在我的网站上,三元运算符被全部使用,我正在考虑尝试更新它们以便合并。这只是一个例子,我希望得到关于过渡的提示/建议。合并的东西是它发送它找到的第一个值/字符串,所以我不确定这是否可以合并?

echo (
($member_logged_in == 1)
? '<a href="profile.php">My Profile</a>'
: '<a href="login.php">Login</a>'
);

是否可以将其转换为合并,还是应该坚持使用三元运算符?

2 个答案:

答案 0 :(得分:0)

??返回第一个操作数(如果存在且不为空)。如果$member_logged_in等于1,您希望输出字符串。

在这种情况下,您不应该使用??运算符。

答案 1 :(得分:0)

只要您要使用整数或布尔值来控制模板内容,那么您将无法使用逻辑语句。

唯一的两种选择是使用三元默认运算符,或编写辅助函数。

// replace boolean with a string or null
$member_logged_in = '<a href="profile.php">My Profile</a>';
//.....
echo $member_logged_in ?: '<a href="login.php">Login</a>';

使用逻辑功能

function __($a,$b,$c) { return $a ? $b : $c; }
//........
echo __($member_logged_in, '<a href="profile.php">My Profile</a>', '<a href="login.php">Login</a>');

理想情况下,模板中不应存在任何条件。您可以注入一个名为$menu的变量,该变量包含要显示的链接,模板不应该关注成员是否已登录。