如何在三元运算符中执行函数


How to execute a function in ternary operator

我想通过某个if else语句创建一个导航列表。以下是我打算做的:

$v='p';
......
......
some codes go here
......
$menu1 ='<li><a href="#">Market</a>'.$v==='p' ? set_submenu('market'):''.'</li>';
.........
........
echo $menu1;

该行做什么,如果$vp,那么它添加一个 market 的子菜单,该子菜单有一些其他子菜单。如果$v不是"p",那么它只创建菜单,而不创建子菜单。但这并没有发生,什么都没有输出。但是如果我把它分成三行,比如:

$menu1 ='<li><a href="#">Market</a>';
$menu1 .= $v==='p' ? set_submenu('market'):'';
$menu1 .= '</li>';

然后显示带有子菜单的菜单。但是对于更干净的代码,我想在一行中完成。如何在一行代码中连接它们?

试试这个:

$menu1 = '<li><a href="#">Market</a>' . ($v === 'p' ? set_submenu('market') : '') . '</li>';

您没有对三元使用正确的语法,您的条件需要括号。我测试了以下内容,它起作用了。

$menu1 ='<li><a href="#">Market</a>'.($v == 'p') ? set_submenu('market'):''.'</li>';