2011-03-20 57 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']