2017-09-11 3 views
1

より高度な文字列を書く方法を学びたいと考えています。私は次のような3つのステートメントを使用してこれを行うことができることを知っています。関数を使用した二重引用符の文字列の書式設定

<?php 
function1(); 
echo " | "; 
function2(); 
?> 

このような結果を得るには、result1 |結果2

(これは私の現実世界の例のような、ワードプレスで前および次の記事へのリンクを作成します

<?php 
previous_post_link('%link', '< Previous'); 
echo ' | '; 
next_post_link('%link', 'Next >'); 
?> 

しかし、私が改善しようと、新しいを学ぶおりますので私はこれをもっときれいに書こうとしています。 | result1result2:私は、私はこのように、関数を挿入するために二重引用符や中括弧を使用することができます知っている:

<?php 
echo "{${function1()}} | {${function2()}}"; 
?> 

しかし、これは次のように結果を返します

なぜこれが起こり、このコードを正しく書くことができますか?

ありがとうございます!

+0

私は最後の例は__clean__であると言うことはできません。 –

+0

それはありませんか?書き留めました。私はまだこのすべてに非常に新しいです。 :) – zver

答えて

2

これは、あなたの「クリーンな」例がPHPによって進められているため、ロジックのためです。手順は次のとおりです。

  1. のInvokeはfunction1()。ファンクションは画面に即座に出力します。 "result1"
  2. function2()を呼び出します。関数は画面に即座に出力します: "result2"。 、および関数2()の返された値、および連結した文字列をエコー|「」そして、あなたはすでにして、画面上ではfunction1()の
  3. を連結返された値を「result1result2」を持っています。あなたの関数がreturn文を使わないので、返された値はnullです。したがって、このステップからの出力は "|"です。
  4. 最後に、我々が持っている "result1result2 |"
+0

ああ、説明をありがとう。つまり、処理するときには、まずエコー文字列全体を読み取って出力できるようにしなければなりませんが、そうしている間は文字列内で見つかった関数を呼び出し、関数が何かを出力するように指示すれば、それは実際にechoコマンドを出力する前にそれを表示します。 中括弧は私が使用していた文字列中にエスケープしてから返された値を出力するので、function1()とfunction2()は戻り値を持たなければなりません。 – zver

+0

はい、私の答えに書いたものにかなり近いです。 –

+0

絶対に、あなたが書いたものです。私はちょうどこのすべての周りに私の心を包み込むことを試みている。再度、感謝します! – zver

関連する問題