2017-09-11 23 views
1

我在學習編寫更高級的字符串。我知道我可以做到這一點使用三種不同的語句,如:格式化帶功能的雙引號字符串

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

爲了得到這樣的結果:RESULT1 | RESULT2

(我對這個現實世界的例子是創建鏈接到WordPress的一個和下一個職位,如:

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

但是,因爲我想提高,學習新事情,我正在努力寫得更乾淨。我知道我可以使用雙引號和大括號插入的功能,如:

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

但這返回這樣的結果:result1result2 |

爲什麼會發生這種情況,我該如何正確編寫此代碼?

謝謝!

+0

我不能說最後一個例子是__clean__。 –

+0

不是?好的,注意到。我對這一切仍然很陌生。 :) – zver

回答

2

這是因爲你的「乾淨」的例子是由php進行的邏輯。步驟如下:

  1. 調用function1()。功能會立即輸出到屏幕上:「result1」
  2. 調用function2()。函數立即輸出到屏幕:「result2」。你已經有了「result1result2」在屏幕上期函數()的
  3. 串聯返回值,用「|」,並函數2()的返回值,並呼應連接字符串。正如我所假設的那樣,返回值爲null,因爲您的函數不使用返回語句。所以,這一步的輸出是「|」。
  4. 最後,我們有「result1result2 |」
+0

啊,謝謝你的解釋。所以要清楚的是:在處理時,php首先必須讀取整個echo字符串才能輸出它,但是這樣做時會調用它在字符串中找到的函數,並且如果這些函數告訴它打印某些內容,它會在打印出echo命令之前將其打印出來。 和大括號在我使用的字符串期間轉義,然後輸出返回的值,所以爲了使其工作,function1()和function2()必須具有返回值。 – zver

+0

是的,這與我在答案中寫的非常接近。 –

+0

絕對,這正是你寫的。我只是想把所有這些都包括在內。再次感謝! – zver