2017-08-15 132 views
-3

內的破滅爲什麼這是無效的:使用雙引號

$foo = "blah blah {implode(',', $some_array['a key'])}";

這給錯誤:

unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier

我認爲使用該陣列的一個重要的原因。

是否可以在雙引號內使用implode,還是必須先將字符串放入變量中?

+1

這很醜陋。爲什麼不直接與'.'連接? – Derek

+0

對我來說看起來很好! – user3791372

+2

如果看起來很好,它會起作用。這只是一個討厭的男人。 – Derek

回答

4

你現在正在使用它的方式是專爲類化子性質例如:

$foo = "blah blah {$user->name}"; 

如果你想使用的功能,而不先聲明變量,就這樣使用它:

$foo = 'blah blah ' . implode(',', $some_array['a key']); 
4

從手冊:

Complex (curly) syntax

Any scalar variable, array element or object property with a string representation can be included via this syntax

你不能叫大括號內的功能,這就是你得到了錯誤的原因。

可以打破字符串和使用期限串連:

$foo = "blah blah ". implode(',', $some_array['a key']). ""; 
                 #^This is only if you need extra string here