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


140

说我有一个变量$test,它的定义为:$test = 'cheese'

我想输出cheesey,我可以这样:

echo $test . 'y'

但是我更愿意将代码简化为类似以下内容(不起作用):

echo "$testy"

有没有办法y像对待变量一样对待它呢?


1
通过$test = cheese;你的意思是$test = 'cheese'; 在结束您的文章(如果我没看错)...
弃儿

Answers:


242
echo "{$test}y";

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

此外,这不适用于单引号。所以:

echo '{$test}y';

将输出

{$test}y

1
也可以用这种方法内联函数调用吗?类似于"foo{implode(',', [abc])}bar"
velop,2017年

@velop没有 构建字符串通常是在处理发生后完成的。在准备输出时调用函数通常不是您想要的。考虑先调用该函数,然后将结果存储在变量中,然后将其包含在字符串中echo "like so: $var";
Jochem Kuijpers

如何在字符串中嵌入三元运算符,该运算符的结果为两个diff字符串?
oldboy

50

您可以使用{}arround变量将变量与后续变量分开:

echo "{$test}y"

作为参考,您可以查看PHP手册的“ 变量解析-复杂(卷曲)语法”部分。


谢谢。我尝试阅读字符串手册,但不确定要搜索的内容是什么。
马特·麦当劳

2
不客气:-)是的,当您不真正知道要搜索的内容时,并不总是很容易找到合适的部分^^
Pascal MARTIN

值得注意的是,一旦进入{},就可以使用表达式,而不仅仅是变量名,例如{$ x-> y [3]}或其他任何表达式。
TextGeek

3

例:

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

它将输出:

俗气的

这正是您想要的。


-3
$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']
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.