2013-01-18 92 views
1

我對PHP很陌生,我試圖連接三個字符串。而這個作品,如果我這樣做:返回新創建的字符串

echo Test::getBaseUrl() , '/' , $append_url; 

但這種情況發生的方法裏面,我想這回被叫,但是當我添加return,而不是echo這樣的:

return Test::getBaseUrl() , '/' , $append_url; 

我得到這樣的錯誤:

PHP Parse error: syntax error, unexpected ',' in /home/ubuntu/Test.php on line 31 

我在哪裏犯錯?

+2

'echo「a」,「b」;'does ** not **連接兩個字符串,它只是首先輸出第一個字符串,然後輸出第二個字符串。 –

回答

5

echo是一個語言結構,它支持的特殊語法,即允許鏈幾個echo - 「動作」。這意味着

echo $a, $b; 

其實

echo $a; echo $b; 

(不是真的,這是一個有點不同,但是那並不重要)

你是什麼真正找的是串聯

echo $a . $b; 

哪(因爲這是一個普通的操作員)工作無線所有能夠處理字符串的東西

return $a . $b; 
4

使用這種.進行連結在PHP

return Test::getBaseUrl() . '/' . $append_url; 

正如囚犯提出

補充:它適用於回聲$ X,$ Y,$ z上的原因是因爲你可以通過一個逗號列表,主要輸出多個回顯(例如echo $x; echo $y;)。

+1

附加:它爲'echo $ x,$ y,$ z'工作的原因是因爲您可以傳遞一個逗號列表,它本質上與連接相同。 – Prisoner

+0

@Prisoner否:)比較http://codepad.viper-7.com/ib5k62和http://codepad.viper-7.com/NNNNFo「基本相同」意味着,它表現得像一個串聯,但它們都表現得非常不同:用','每個語句都是自己的'echo'。如果使用連接'.',則首先應用連接,然後_then_輸出結果字符串。 – KingCrunch

+0

@KingCrunch Fair,它的行爲更像多重回聲,因爲它可以連接在一起。 – Prisoner

1

PHP string concatenation uses a。

echo Test::getBaseUrl() . '/' . $append_url; 
2

我不認爲用於在任何編程語言中連接字符串。

在PHP中,連接運算符(。)用於將兩個字符串值放在一起。

echo Test::getBaseUrl() . '/' . $append_url; 

return Test::getBaseUrl() . '/' . $append_url; 

參見:PHP String

1

如果你想在字符串逗號:

echo Test::getBaseUrl().','.'/'.', '.$append_url; 
1

當您使用echo Test::getBaseUrl() , '/' , $append_url;你實際上是在說

echo Test::getBaseUrl(); 
echo '/'; 
echo $append_url; 

如果您想將創建一個字符串,您必須使用連接3個字符串 例如:

return Test::getBaseUrl() . '/' . $append_url; 
1

包含關鍵詞語言構建常規結構所有答案都是正確的金錢,但我只想澄清多一點:
函數不能超過返回1值沒有更多的東西(並沒有少...在某些低級別,功能確實完成時返回一些信號。換句話說,如果return是一個函數,那也就可以定義沿着線的東西:

function return($value) 
{//written in PHP-style, obviously 
    fwrite(php://stdout, $value, sizeof($value)); 
} 

簡單:一個函數,它只有一個參數,因此逗號分離的許多論點根本不工作

+0

謝謝一點額外的信息! – sriram