以下是echo
声明:
echo " <a class=\"pagination-link\" href='{$_SERVER['PATH_INFO']}?page=$nextpage#comment-target'> > </a> ";
这是ternary expression
。它的作用是仅当条件为真时才将#comment-target
连接到链接的末尾:
( $paginationAddCommentAnchor ?? null) ? '#comment-target' : null
我需要在echo
语句#comment-target
中替换ternary expression
,但每次尝试都会以错误的引语作为丑陋的泥球。示例尝试:
echo " <a class=\"pagination-link\" href='{$_SERVER['PATH_INFO']}?page=$nextpage . ( $paginationAddCommentAnchor ?? null) ? '#comment-target' : null'> > </a> ";
什么是正确的语法,所以最终结果与初始echo
语句相同,但是使用三元语法生成?
答案 0 :(得分:0)
PHP在由双引号("
)括起的字符串中执行variables parsing,但这就是全部。如果需要计算表达式,则必须将其放在字符串之外,并使用string concatenation operator (.
)将其值与周围的字符串连接。
或者,为了获得更易读的代码,请使用printf()
:
printf(' <a class="pagination-link" href="%s?page=%s%s> > </a> ',
$_SERVER['PATH_INFO'], $nextpage,
$paginationAddCommentAnchor ? '#comment-target' : ''
);
答案 1 :(得分:0)
看起来试图在一行中做很多事情,而不是正确控制所有部分(引号,字符串连接,三元运算符......)。为了保持清晰和受控制,请在分隔的块中构建最终字符串:
$tmp_str = $nextpage . ( $paginationAddCommentAnchor ?? null) ? '#comment-target' : '';
echo "<a class=\"pagination-link\" href=\"{$_SERVER['PATH_INFO']}?page=$tmp_str\"></a>";
测试here。