Gostaria de saber qual é a maneira correta de inserir variáveis PHP em uma string?
Deste jeito:
echo "Welcome ".$name."!"
Ou assim:
echo "Welcome $name!"
Ambos os métodos funcionam no meu PHP v5.3.5
. O último é mais curto e mais simples, mas não tenho certeza se o primeiro é de melhor formatação ou aceito como mais adequado.
php
string
variables
concatenation
Web designer
fonte
fonte
echo 'Welcome '.$name.'!';
Respostas:
Entre essas duas sintaxes, você realmente deve escolher a que preferir :-)
Pessoalmente, eu usaria sua segunda solução nesse caso (interpolação variável) , que acho mais fácil escrever e ler.
O resultado será o mesmo; e mesmo se houver implicações no desempenho, elas não serão importantes 1 .
Como nota de rodapé, minha resposta é um pouco mais completa: no dia em que você desejar fazer algo assim:
O PHP interpretará seu código como se você estivesse tentando usar a
$names
variável - que não existe. - note que só funcionará se você "" não '' para sua string.Nesse dia, você precisará usar
{}
:Não há necessidade de recuar para concatenações.
Observe também que sua primeira sintaxe:
Provavelmente poderia ser otimizado , evitando concatenações, usando:
(Mas, como eu disse anteriormente, isso não importa muito ...)
1 - A menos que você esteja fazendo centenas de milhares de concatenações x interpolações - e provavelmente não é bem assim.
fonte
{}
.echo
, e em nenhum outro lugar.time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = $string.$i; } print("Done!\n");'
(Concatenação) na verdade perde cerca de 300 milissegundos (para 200.000 itens, isso significa 1 milissegundo por mil elementos em seu conjunto ...). Isso é ruído estatístico, é impossível medir qualquer diferença. Considerando que é mais legível,time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = "{$string}{$i}"; } print("Done!\n");'
(interpolação) é o vencedor indiscutível ...As strings entre aspas duplas são mais elegantes porque você não precisa dividir sua string toda vez que precisar inserir uma variável (como você deve fazer com strings entre aspas simples).
No entanto, se você precisar inserir o valor de retorno de uma função, ele não poderá ser inserido em uma cadeia de caracteres entre aspas duplas - mesmo se você a envolver com chaves!
fonte
$x = function() { ...}; $string = "hello {$x(blah blah blah)}"
, que contorna a "restrição".$x = 'trim'; $string = "hello {$x('blah blah blah')}";
$s = 'Hello ' . trim($world) .'!';
Tente usar aspas simples quando não há nada para interpolar em string.It irá melhorar o desempenho e pode ser usado como uma convenção para identificar tantoDesde php4 você pode usar um formatador de strings:
Fonte: sprintf ()
fonte
Qualquer um está bom. Use o que tiver melhor visibilidade para você. E por falar em visibilidade, você também pode conferir printf .
fonte
Do ponto de vista de tornar o pensamento simples , legível , consistente e fácil de entender (já que o desempenho não importa aqui):
O uso de vars incorporados entre aspas duplas pode levar a situações complexas e confusas quando você deseja incorporar propriedades de objetos, matrizes multidimensionais etc. Ou seja, geralmente ao ler vars incorporados, você não pode ter instantaneamente 100% de certeza do comportamento final do que está lendo .
Você frequentemente precisa adicionar muletas como
{}
e\
, o que IMO gera confusão e torna a legibilidade da concatenação quase equivalente, se não melhor.Assim que você precisar encerrar uma chamada de função em torno do var, por exemplo
htmlspecialchars($var)
, precisará mudar para concatenação.AFAIK, você não pode incorporar constantes.
Em alguns casos específicos, "aspas duplas com incorporação de vars" pode ser útil, mas de um modo geral, eu usaria concatenação (usando aspas simples ou duplas, quando conveniente)
fonte
Sei que esta pergunta já tem uma resposta escolhida, mas encontrei este artigo que mostra evidentemente que a interpolação de cadeias funciona mais rápido que a concatenação. Pode ser útil para quem ainda está em dúvida.
fonte
Vá com o primeiro e use aspas simples!
As únicas situações em que você deve usar aspas duplas, é quando você precisa
\r
,\n
,\t
! A sobrecarga simplesmente não vale a pena usá-la em qualquer outro caso.Você também deve verificar a concatenação de variáveis PHP , phpbench.com , para obter alguns benchmarks sobre diferentes métodos de fazer as coisas.
fonte
\r
, como outras respostas, não incluíam esse trecho.\n
\t
É apenas uma questão de gosto.
Use o que quiser.
Na maioria das vezes eu estou usando o segundo, mas isso depende.
Deixe-me sugerir que você também consiga um bom editor que realce uma variável dentro de uma string
fonte
Não concatenar. Não é necessário, vírgulas como o eco pode assumir vários parâmetros
Quanto ao uso de aspas simples ou duplas, a diferença é insignificante, você pode fazer testes com um grande número de strings para testar por si mesmo.
fonte
Você deve escolher o primeiro. Eles não têm diferença, exceto o desempenho, o primeiro será o mais rápido na comparação do segundo.
Se a variável dentro do PHP entre aspas duplas demorar para analisar a variável.
Confira esta aspas simples ou duplas para concatenação de variáveis?
Este é outro exemplo. Existe um benefício de desempenho entre aspas simples e aspas duplas no php?
Não entendi por que essa resposta no link acima foi votada e por que essa resposta foi reduzida com o voto.
Como eu disse a mesma coisa.
Você pode olhar aqui também
O que é mais rápido no PHP, aspas simples ou duplas?
fonte
Se você deseja executar um
SQL
comando e suas variáveis são membros da matriz, não use aspas simples dentro[]
da matriz (assim:)['']
; por exemplo, se você usar essa sequência como um comando SQL, obtémserver error 500
:A sequência correta é:
fonte
Sei que essa é uma pergunta antiga, mas acho que alguém precisa mencionar todos os prós e contras:
Melhor sintaxe : essa é a preferência pessoal.
Desempenho : sem diferença. Como muitos mencionados, as aspas duplas podem ser mais rápidas se você usar muitas variáveis irrealisticamente.
Melhor uso : aspas simples (principalmente). Como disse @Khez, com aspas simples você pode concatenar nada, chamadas de função mesmo e modificação variável, assim:
echo 'hi ' . trim($name) . ($i + 1);
. A única coisa double-quote pode fazer isso aspa simples não pode fazer é o uso de\n
,\r
,\t
e afins.Legibilidade : Não há diferença (pode haver preferência pessoal).
Gravação / regravação / depuração : nas instruções de 1 linha não há diferença, mas ao lidar com várias linhas, é mais fácil comentar / descomentar linhas durante a depuração ou gravação. Por exemplo:
Menos escape : aspas simples. Para aspas simples, você precisa escapar apenas de 2 caracteres (
'
e\
). Para aspas duplas, você precisa escapar de 2 caracteres ("
,\
) e mais 3, se necessário ($
,{
e}
).Menos alterações : aspas simples. Por exemplo, se você tiver o seguinte código:
E você precisa aumentar de 1 a $ i, para que se torne algo como:
Mas, para aspas duplas, você precisará alterar isso:
para isso:
Conclusão : use o que preferir .
fonte