2011-03-20 86 views
97

有沒有人知道這樣做的更有效的方式?混合PHP變量與字符串文字

說我有一個變量$test,它的定義爲:$test = 'cheese'

我要輸出cheesey,我可以這樣做:

echo $test . 'y' 

但是,我寧願簡化代碼更像這樣的東西(這當然不會工作):

echo "$testy" 

這個例子很平凡,但有時我想添加爲在我引用一個變量(例如,當創建一個MySQL查詢時)之後直接引用,並想知道是否有辦法將y視爲與變量分開,而不需要將其分開。

下面的例子作品,其內容在echo語句更好,但不是我想要的東西:

$test = cheese; 
$y = 'y'; 
echo "$test$y"; 

回答

165
echo "{$test}y"; 

可以使用大括號直接在字符串變量插值時去除不確定性。

此外,這不適用於單引號。所以:

echo '{$test}y'; 

將輸出

{$test}y 
+1

是它也可以內聯函數具有這樣的方法調用?類似於'「foo {implode(',',[abc])} bar」' – velop 2017-04-27 15:46:08

43

您可以使用{}角落找尋你的變量,把它從什麼是後分開:

echo "{$test}y" 

爲參照,你可以去看看的Variable parsing - Complex (curly) syntax PHP手冊的一部分。

+0

謝謝。我嘗試閱讀字符串手冊,但並不確定我在尋找什麼,以便搜索我之後的內容。 – 2011-03-20 14:00:54

+2

不客氣:-)是的,並不總是很容易找到正確的部分,當你不知道你在尋找什麼^^ – 2011-03-20 14:01:52

+0

值得注意的是,一旦你進入{},你可以使用表達式,而不僅僅是變量名稱,例如{$ x-> y [3]}或其他。 – TextGeek 2016-10-29 15:35:14

0
$bucket = '$node->' . $fieldname . "['und'][0]['value'] = " . '$form_state' . "['values']['" . $fieldname . "']"; 

print $bucket; 

收率:

$node->mindd_2_study_status['und'][0]['value'] = $form_state['values'] 
['mindd_2_study_status']