将PHP变量与字符串文字混合

179

假设我有一个变量$test,定义如下:$test = 'cheese'

我想要输出cheesey,可以这样实现:

echo $test . 'y'

但我更倾向于简化代码,使其更像这样(但这种写法是无效的):

echo "$testy"

有没有一种方法可以使变量中的y被视为与变量本身分开处理?


1
你在帖子末尾所说的“$test = cheese;”是指“$test ='cheese';”。 - Outcast
5个回答

309
echo "{$test}y";

在字符串中直接插值变量时,您可以使用大括号来消除歧义。

此外,这种方法不适用于单引号。因此:

echo '{$test}y';

将输出

{$test}y

2
使用这种方法是否也可以内联函数调用?类似于 "foo{implode(',', [abc])}bar" - velop
1
@velop 不是的。构建字符串通常是在处理完成后进行的。在准备输出时调用函数通常不是您想要的。考虑先调用函数,将结果存储在变量中,然后可以将其包含在字符串中 echo "like so: $var"; - Jochem Kuijpers
如何在字符串中嵌入一个三元运算符,该运算符评估为两个不同的字符串? - oldboy

60

谢谢。我尝试阅读字符串手册,但不确定我要查找什么来搜索我需要的内容。 - Matt McDonald
2
不客气 :-) 是的,当你不知道在找什么时,有时很难找到正确的部分。^^ - Pascal MARTIN
1
值得注意的是,一旦你进入 {} 中,你可以使用表达式,而不仅仅是变量名,例如 {$x->y[3]} 或其他。 - TextGeek

8

例子:

$test = "chees";
"${test}y";

它将输出:

俗气的

这正是您想要的。


1

-2
$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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接