Misturando uma variável PHP com uma string literal

140

Digamos que eu tenho uma variável $test e seja definida como:$test = 'cheese'

Eu quero saída cheesey, que eu posso fazer assim:

echo $test . 'y'

Mas eu preferiria simplificar o código para algo mais ou menos assim (o que não funcionaria):

echo "$testy"

Existe uma maneira de yser tratado como se fosse separado da variável?

Matt McDonald
fonte
1
por $test = cheese;que você quis dizer $test = 'cheese'; no final o seu post (se não me engano) ...
Outcast

Respostas:

242
echo "{$test}y";

Você pode usar chaves para remover a ambiguidade ao interpolar variáveis ​​diretamente em cadeias.

Além disso, isso não funciona com aspas simples. Assim:

echo '{$test}y';

irá produzir

{$test}y
alex
fonte
1
também é possível integrar chamadas de função com esse método? Algo semelhante a"foo{implode(',', [abc])}bar"
velop
@velop Nope. A construção de strings geralmente é feita após o processamento. Chamar funções no meio da preparação da saída geralmente não é o que você deseja. Considere chamar a função primeiro, armazenar o resultado em uma variável e depois incluí-la na string echo "like so: $var";.
Jochem Kuijpers
como incorporar um operador ternário que avalia duas seqüências de diferenças em uma seqüência de caracteres?
Oldboy
50

Você pode usar {}arround sua variável, para separá-la do que está depois:

echo "{$test}y"

Como referência, você pode dar uma olhada na seção de sintaxe Variable parsing - Complex (curly) do manual PHP.

Pascal MARTIN
fonte
Obrigado. Tentei ler o manual de strings, mas não sabia exatamente o que estava procurando, para procurar o que estava procurando.
Matt McDonald
2
Você é bem-vindo :-) Sim, nem sempre é fácil encontrar a seção direita, quando você realmente não sei o que você está procurando ^^
Pascal MARTIN
Vale a pena notar que, uma vez dentro do {}, você pode usar expressões, não apenas nomes de variáveis, como {$ x-> y [3]} ou qualquer outra coisa.
TextGeek
3

Exemplo:

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

Ele produzirá:

brega

É exatamente o que você está procurando.

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

print $bucket;

rendimentos:

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