在PHP7中,我将如何将我的网站的这个基本三元函数转换为聚合?

在PHP7中,我将如何将我的网站的这个基本三元函数转换为聚合?,php,ternary-operator,coalescing,Php,Ternary Operator,Coalescing,在我的网站上,三元运算符被广泛使用,我正在考虑尝试更新它们以合并。这只是一个例子,我希望能得到一些关于过渡的建议。coalesce的问题是它发送它找到的第一个值/字符串,所以我不确定coalesce是否可以做到这一点 echo ( ($member_logged_in == 1) ? '<a href="profile.php">My Profile</a>' : '<a href="login.php">Login</a>' ); echo(

在我的网站上,三元运算符被广泛使用,我正在考虑尝试更新它们以合并。这只是一个例子,我希望能得到一些关于过渡的建议。coalesce的问题是它发送它找到的第一个值/字符串,所以我不确定coalesce是否可以做到这一点

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

是否可以将其转换为coalesce,或者我应该使用三元运算符?

如果第一个操作数存在且不为空,则
将返回第一个操作数。如果
$member\u logged\u in
等于
1
,则需要输出字符串


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

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

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

// 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>';
//用字符串或null替换布尔值
$member\u logged\u in='';
//.....
echo$member_登录?:'';
使用逻辑函数

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>');
函数(($a,$b,$c){返回$a?$b:$c;}
//........
echo($member\u logged\u in,'','');

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

如果(!empty($member\u logged\u in))回显“profile link”,您不只是执行
操作,还有什么特殊原因吗?实际上是的,因为在每一个(验证或不验证)上都需要一个特定的echo语句。我最初有大(r)if语句,然后通过SO学习了三元运算符,想知道我现在是否应该转换到联合运算符?@BluTiger13只是一个旁注,您可以删除所有括号。它们是多余的,真的吗?EclipsePHP版本给出了我的黄色警告标志。谢谢好的,谢谢。我不确定是否有一种方法可以调整它或不获得“最新和最好的”。然而,目前三元运算符正在按预期工作。哇。我没有考虑过。非常感谢。老实说,我本质上是一个业余开发者。我可以做一个数组…并返回很多有趣的东西。我真的很感激!