2017-05-02 5 views
0

を三項演算子を埋め込むことはできませんecho文です:は、ここでecho文に

echo " <a class=\"pagination-link\" href='{$_SERVER['PATH_INFO']}?page=$nextpage#comment-target'> &gt; </a> "; 

そして、ここではternary expressionです。何それがないと、条件がtrueの場合にのみ、リンクの最後に#comment-targetを連結です:

($paginationAddCommentAnchor ?? null) ? '#comment-target' : null 

私はternary expressionによってecho声明、#comment-targetに交換する必要がありますが、すべての試みは醜いボールのように終わります間違った見積もりで泥の例の試み:適切な構文になり何

echo " <a class=\"pagination-link\" href='{$_SERVER['PATH_INFO']}?page=$nextpage . ($paginationAddCommentAnchor ?? null) ? '#comment-target' : null'> &gt; </a> "; 

ので、最終的な結果は、初期echo文と同じですが、三成分を用いて製造さ?

+0

'$ paginationAddCommentAnchor ?? null'は '$ paginationAddCommentAnchor'と同じです – axiac

+0

複数の行と変数を使用すると、コードを読みやすくなります。 – Quentin

+1

PHPは、二重引用符( '" ')で囲まれた文字列内の[variables parsing](http://php.net/manual/en/language.types.string.php#language.types.string.parsing)あなたが式を評価する必要があるならば、それを文字列の外に置き、[文字列連結演算子( '.')](http://php.net/manual/en)を使ってその値を周囲の文字列に連結しなければなりません/ @ language.operators.string.php)。 – axiac

答えて

0

PHPはvariables parsingの文字列を二重引用符(")で囲みますが、それだけです。式を評価する必要がある場合は、それを文字列の外側に置き、string concatenation operator (.)を使用してその値を周囲の文字列に連結する必要があります。

または、printf()を使用し、より読みやすいコードを取得する:

printf(' <a class="pagination-link" href="%s?page=%s%s> &gt; </a> ', 
    $_SERVER['PATH_INFO'], $nextpage, 
    $paginationAddCommentAnchor ? '#comment-target' : '' 
); 
+0

ありがとう、これは助けて、私は答えとしてそれを選ぶでしょう。あなたが言ったようにして、変数を外部に生成し、それを単純に連結しました。 –

0

が正しく、すべての部品(引用符、文字列conncatenation、三項演算子を制御していない、単一のラインで多くのことをやろうとしているように見えます...)。

$tmp_str = $nextpage . ($paginationAddCommentAnchor ?? null) ? '#comment-target' : ''; 

echo "<a class=\"pagination-link\" href=\"{$_SERVER['PATH_INFO']}?page=$tmp_str\"></a>"; 

テストそれhere:明らかと制御の下で物事を保つために、分離されたブロックの最後の文字列を構築します。

関連する問題