print_r não é exatamente um alias de var_dump - ele gera um formato diferente. Notavelmente, a saída de var_dump também inclui o "tipo" de cada variável.
Outro detalhe a ser adicionado e que pode ser útil é que var_dump trunca textos muito longos, mostrando ... e indicando o tamanho restante, por exemplo: even '... (length = 4482) Se você usar echo, isso não acontecerá.
Yordan
Respostas:
186
printe echosão mais ou menos iguais; ambos são construções de linguagem que exibem seqüências de caracteres. As diferenças são sutis: printpossui um valor de retorno 1, portanto pode ser usado em expressões, enquanto echopossui um voidtipo de retorno; echopode assumir vários parâmetros, embora esse uso seja raro; echoé um pouco mais rápido queprint . (Pessoalmente, eu sempre uso echo, nunca print.)
var_dumpimprime um despejo detalhado de uma variável, incluindo seu tipo e o tipo de qualquer subitem (se for uma matriz ou um objeto). print_rimprime uma variável de uma forma mais legível para o ser humano: seqüências de caracteres não são citadas, informações de tipo são omitidas, tamanhos de matriz não são fornecidos etc.
var_dumpgeralmente é mais útil do que print_rna depuração, na minha experiência. É particularmente útil quando você não sabe exatamente quais valores / tipos você tem em suas variáveis. Considere este programa de teste:
@Shore - é algo incorporado à linguagem que não é uma função. Eles geralmente são muito rápidos e não operam exatamente como as funções normais.
alex
3
Editado dois anos depois para corrigir as imprecisões identificadas nesses comentários. Obrigado a todos, eu devo estar dormindo em 7 de junho de 2010. ;-)
Retorna 1, para que possa ser usado em uma expressão
por exemplo print "Hello"
ou, if ($expr && print "foo")
print_r ()
Saídas uma representação legível de qualquer um valor
Aceita não apenas strings, mas outros tipos, incluindo matrizes e objetos, formatando-os para serem legíveis
Útil ao depurar
Pode retornar sua saída como um valor de retorno (em vez de ecoar) se o segundo argumento opcional for fornecido
var_dump ()
Produz uma representação legível por humanos de um ou mais valores separados por vírgulas
Aceita não apenas strings, mas outros tipos, incluindo matrizes e objetos, formatando-os para serem legíveis
Usa um formato de saída diferente para print_r(), por exemplo, também imprime o tipo de valores
Útil ao depurar
Sem valor de retorno
var_export ()
Saídas um legível e PHP-executável representação de qualquer um valor
Aceita não apenas strings, mas outros tipos, incluindo matrizes e objetos, formatando-os para serem legíveis
Usa um formato de saída diferente para ambos print_r()e var_dump()- a saída resultante é um código PHP válido!
Útil ao depurar
Pode retornar sua saída como um valor de retorno (em vez de ecoar) se o segundo argumento opcional for fornecido
Notas:
Mesmo que printpossa ser usado em uma expressão, recomendo que as pessoas evitem fazê-lo, porque é ruim para a legibilidade do código (e porque é improvável que seja útil). As regras de precedência quando interage com outros operadores também podem ser confusas. Por isso, eu pessoalmente nunca tenho motivos para usá-lo echo.
Considerando que echoe printsão construções de linguagem print_r()e var_dump()/ var_export()são funções regulares. Você não precisa de parênteses para colocar os argumentos em echoou print(e, se você os usar, eles serão tratados da mesma maneira que em uma expressão).
Embora var_export()retorne um código PHP válido, permitindo que os valores sejam lidos mais tarde, depender desse código de produção pode facilitar a introdução de vulnerabilidades de segurança devido à necessidade de uso eval(). Seria melhor usar um formato como JSON para armazenar e ler valores de volta. A velocidade será comparável.
Apenas uma observação rápida sobre quando você deseja a echo $a, $b;sintaxe quando pode fazer echo $a . $b;: se $ a ou $ b são realmente grandes seqüências de caracteres, o último usará memória e tempo extras, criando uma versão concatenada separada das seqüências de caracteres na memória antes dela pode iniciar a saída para o navegador.
thomasrutter
Claro que você também pode usar echo $a; echo $b;.
thomasrutter
16
Apenas para adicionar à resposta de John , echodeve ser o único que você usa para imprimir conteúdo na página.
printé um pouco mais lento. var_dump()e print_r()deve ser usado apenas para depuração.
Também vale a pena mencionar que, print_r()e var_dump()por padrão, ecoará, adicione um segundo argumento ao print_r()menos que seja avaliado como true para que ele retorne, por exemplo print_r($array, TRUE).
A diferença entre ecoar e retornar são:
eco: imprimirá imediatamente o valor na saída.
return: Retornará a saída da função como uma string. Útil para registro, etc.
Só porque você meio que levantou a questão, qual é a diferença entre echoing e returning?
David diz que restaura Monica
2
wow Eu gostaria de saber sobre o parâmetro de voltar :( basicamente você pode fazer $ foo = print_r ($ array, true); e usá-lo de outras formas (em um log, mesa, etc)
FryGuy
Eu usei print_rbastante o parâmetro de retorno enquanto codificava o PHP. No entanto, eu costumava escrever print_r( $foo, 1 );. É mais rápido digitar;) E sobre isso, não me importo muito com legibilidade, pois também acho o nome print_rnão muito descritivo.
Exhuma
var_dump()não suporta o segundo argumento, permitindo retornar um valor como o print_r()faz, porque var_dump()pode aceitar vários argumentos para a saída.
thomasrutter
@thomasrutter É verdade, não sei por que escrevi isso.
A diferença entre eco , impressão , print_r e var_dump é muito simples.
eco
eco não é realmente uma função, mas uma construção de linguagem usada para imprimir a saída. É marginalmente mais rápido que a impressão.
echo "Hello World";// this will print Hello World
echo "Hello ","World";// Multiple arguments - this will print Hello World
$var_1=55;
echo "$var_1";// this will print 55
echo "var_1=".$var_1;// this will print var_1=55
echo 45+$var_1;// this will print 100
$var_2="PHP";
echo "$var_2";// this will print PHP
$var_3=array(99,98,97)// Arrays are not possible with echo (loop or index value required)
$var_4=array("P"=>"3","J"=>"4");// Arrays are not possible with echo (loop or index value required)
Você também pode usar a instrução echo com ou sem parênteses
echo ("Hello World");// this will print Hello World
impressão
Assim como a impressão de construção de eco também é uma construção de linguagem e não uma função real. As diferenças entre eco e impressão são que a impressão aceita apenas um único argumento e a impressão sempre retorna 1. Enquanto o eco não tem valor de retorno. Portanto, a instrução print pode ser usada em expressões.
print"Hello World";// this will print Hello Worldprint"Hello ","World";// Multiple arguments - NOT POSSIBLE with print
$var_1=55;print"$var_1";// this will print 55print"var_1=".$var_1;// this will print var_1=55print45+$var_1;// this will print 100
$var_2="PHP";print"$var_2";// this will print PHP
$var_3=array(99,98,97)// Arrays are not possible with print (loop or index value required)
$var_4=array("P"=>"3","J"=>"4");// Arrays are not possible with print (loop or index value required)
Assim como o eco , a impressão pode ser usada com ou sem parênteses.
print("Hello World");// this will print Hello World
print_r
o função print_r () é usada para imprimir informações legíveis por humanos sobre uma variável. Se o argumento for uma matriz, a função print_r () imprimirá suas chaves e elementos (o mesmo para objetos).
print_r ("Hello World");// this will print Hello World
$var_1=55;
print_r ("$var_1");// this will print 55
print_r ("var_1=".$var_1);// this will print var_1=55
print_r (45+$var_1);// this will print 100
$var_2="PHP";
print_r ("$var_2");// this will print PHP
$var_3=array(99,98,97)// this will print Array ( [0] => 1 [1] => 2 [2] => 3 )
$var_4=array("P"=>"3","J"=>"4");// this will print Array ( [P] => 3 [J] => 4 )
var_dump
A função var_dump geralmente usada para depuração e imprime as informações (tipo e valor) sobre uma variável / matriz / objeto.
var_dump($var_1);// this will print int(5444)
var_dump($var_2);// this will print string(5) "Hello"
var_dump($var_3);// this will print array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
var_dump($var_4);// this will print array(2) { ["P"]=> string(1) "3" ["J"]=> string(1) "4" }
Existem muitos problemas com esta resposta. nãoprint é uma função real, é uma construção de linguagem como eco. Também pode ser usado como uma declaração. não é uma afirmação nem pode ser usada em uma. que não exigem parênteses, nem qualquer eco ou imprimir usar os parênteses como uma função faria. Você também perdeu uma das principais diferenças - o eco aceita várias cadeias para eco separadas por vírgulas. echoprint
thomasrutter
2
... e você enviou esta resposta quando várias respostas já existiam e continham as informações corretas .
thomasrutter
2
** O Echocan aceita várias expressões enquanto a impressão não pode. A função PHP Print_r () é usada para retornar uma matriz em um formato legível por humanos. É simplesmente escrito como
echo: echo é uma construção de linguagem na qual não é necessário usar parênteses com ela e pode receber qualquer número de parâmetros e retornar nulo.
print: é uma construção de linguagem em que não é necessário usar parênteses, basta pegar um parâmetro e retornar
1 always.intprint(param1);print"test1";print"test1","test2";// It will give syntax error
prinf: É uma função que leva pelo menos uma string e estilo de formato e retorna o comprimento da string de saída.
int printf($string,$s);
$s="Shailesh";
$i= printf("Hello %s how are you?",$s);
echo $i;Output:HelloShailesh how are you?27
echo returns void so its execution is faster than printand printf
print_r () pode imprimir o valor, mas também se o segundo parâmetro da flag for passado e for TRUE - ele retornará o resultado impresso como string e nada será enviado para a saída padrão. Sobre var_dump. Se o depurador do XDebug estiver instalado, os resultados serão formatados de maneira muito mais legível e compreensível.
Respostas:
print
eecho
são mais ou menos iguais; ambos são construções de linguagem que exibem seqüências de caracteres. As diferenças são sutis:print
possui um valor de retorno 1, portanto pode ser usado em expressões, enquantoecho
possui umvoid
tipo de retorno;echo
pode assumir vários parâmetros, embora esse uso seja raro;echo
é um pouco mais rápido queprint
. (Pessoalmente, eu sempre usoecho
, nuncaprint
.)var_dump
imprime um despejo detalhado de uma variável, incluindo seu tipo e o tipo de qualquer subitem (se for uma matriz ou um objeto).print_r
imprime uma variável de uma forma mais legível para o ser humano: seqüências de caracteres não são citadas, informações de tipo são omitidas, tamanhos de matriz não são fornecidos etc.var_dump
geralmente é mais útil do queprint_r
na depuração, na minha experiência. É particularmente útil quando você não sabe exatamente quais valores / tipos você tem em suas variáveis. Considere este programa de teste:Com
print_r
você, você não pode dizer a diferença entre0
e0.0
, oufalse
e''
:fonte
eco
Sem valor de retorno
por exemplo
echo "String 1", "String 2"
impressão
Retorna
1
, para que possa ser usado em uma expressãopor exemplo
print "Hello"
ou,
if ($expr && print "foo")
print_r ()
var_dump ()
print_r()
, por exemplo, também imprime o tipo de valoresvar_export ()
print_r()
evar_dump()
- a saída resultante é um código PHP válido!Notas:
print
possa ser usado em uma expressão, recomendo que as pessoas evitem fazê-lo, porque é ruim para a legibilidade do código (e porque é improvável que seja útil). As regras de precedência quando interage com outros operadores também podem ser confusas. Por isso, eu pessoalmente nunca tenho motivos para usá-loecho
.echo
eprint
são construções de linguagemprint_r()
evar_dump()
/var_export()
são funções regulares. Você não precisa de parênteses para colocar os argumentos emecho
ouprint
(e, se você os usar, eles serão tratados da mesma maneira que em uma expressão).var_export()
retorne um código PHP válido, permitindo que os valores sejam lidos mais tarde, depender desse código de produção pode facilitar a introdução de vulnerabilidades de segurança devido à necessidade de usoeval()
. Seria melhor usar um formato como JSON para armazenar e ler valores de volta. A velocidade será comparável.fonte
echo $a, $b;
sintaxe quando pode fazerecho $a . $b;
: se $ a ou $ b são realmente grandes seqüências de caracteres, o último usará memória e tempo extras, criando uma versão concatenada separada das seqüências de caracteres na memória antes dela pode iniciar a saída para o navegador.echo $a; echo $b;
.Apenas para adicionar à resposta de John ,
echo
deve ser o único que você usa para imprimir conteúdo na página.print
é um pouco mais lento.var_dump()
eprint_r()
deve ser usado apenas para depuração.Também vale a pena mencionar que,
print_r()
evar_dump()
por padrão, ecoará, adicione um segundo argumento aoprint_r()
menos que seja avaliado como true para que ele retorne, por exemploprint_r($array, TRUE)
.A diferença entre ecoar e retornar são:
fonte
echo
ing ereturn
ing?print_r
bastante o parâmetro de retorno enquanto codificava o PHP. No entanto, eu costumava escreverprint_r( $foo, 1 );
. É mais rápido digitar;) E sobre isso, não me importo muito com legibilidade, pois também acho o nomeprint_r
não muito descritivo.var_dump()
não suporta o segundo argumento, permitindo retornar um valor como oprint_r()
faz, porquevar_dump()
pode aceitar vários argumentos para a saída.Não tendo tipo de retorno
Tem tipo de retorno
Saídas como formatadas,
fonte
A diferença entre eco , impressão , print_r e var_dump é muito simples.
eco não é realmente uma função, mas uma construção de linguagem usada para imprimir a saída. É marginalmente mais rápido que a impressão.
Você também pode usar a instrução echo com ou sem parênteses
Assim como a impressão de construção de eco também é uma construção de linguagem e não uma função real. As diferenças entre eco e impressão são que a impressão aceita apenas um único argumento e a impressão sempre retorna 1. Enquanto o eco não tem valor de retorno. Portanto, a instrução print pode ser usada em expressões.
Assim como o eco , a impressão pode ser usada com ou sem parênteses.
o função print_r () é usada para imprimir informações legíveis por humanos sobre uma variável. Se o argumento for uma matriz, a função print_r () imprimirá suas chaves e elementos (o mesmo para objetos).
A função var_dump geralmente usada para depuração e imprime as informações (tipo e valor) sobre uma variável / matriz / objeto.
fonte
Eco :
É uma declaração não uma função Sem valor de retorno
Não é necessário os parênteses
Não imprimir matriz
Impressão
É função real
Tipo de retorno 1
Necessário Parênteses
Não imprimir matriz
Print_r
Imprimir em formato legível por humanos
String não está entre aspas
Informações não detalhadas da variável, como tipo e todas
var_dump
Todas as informações de despejo da variável, como tipo de elemento e subelemento
fonte
print
é uma função real, é uma construção de linguagem como eco. Também pode ser usado como uma declaração. não é uma afirmação nem pode ser usada em uma. que não exigem parênteses, nem qualquer eco ou imprimir usar os parênteses como uma função faria. Você também perdeu uma das principais diferenças - o eco aceita várias cadeias para eco separadas por vírgulas.echo
print
** O Echocan aceita várias expressões enquanto a impressão não pode. A função PHP Print_r () é usada para retornar uma matriz em um formato legível por humanos. É simplesmente escrito como
fonte
echo: echo é uma construção de linguagem na qual não é necessário usar parênteses com ela e pode receber qualquer número de parâmetros e retornar nulo.
print: é uma construção de linguagem em que não é necessário usar parênteses, basta pegar um parâmetro e retornar
prinf: É uma função que leva pelo menos uma string e estilo de formato e retorna o comprimento da string de saída.
fonte
print_r()
é usado para imprimir a matriz em formato legível por humanos.fonte
print_r () pode imprimir o valor, mas também se o segundo parâmetro da flag for passado e for TRUE - ele retornará o resultado impresso como string e nada será enviado para a saída padrão. Sobre var_dump. Se o depurador do XDebug estiver instalado, os resultados serão formatados de maneira muito mais legível e compreensível.
fonte
ambos são construções de linguagem. o eco retorna nulo e a impressão retorna 1. o eco é considerado um pouco mais rápido que a impressão.
fonte