PHP中的echo,print和print_r有什么区别?

Mak*_*Mak 190 php

我用echoprint_r多,而且几乎从来不使用print.

我觉得它echo是一个宏,print_r是别的var_dump.

但这不是解释差异的标准方法.

Joh*_*ica 181

print并且echo或多或少相同; 它们都是显示字符串的语言结构.差异很微妙:print返回值为1,因此可以在表达式中使用,但echo具有void返回类型; echo可以采用多个参数,尽管这种用法很少见; echo比...快一点print.(就个人而言,我总是使用echo,从不print.)

var_dump打印出变量的详细转储,包括其类型和任何子项的类型(如果它是数组或对象).print_r以更易于阅读的形式打印变量:不引用字符串,省略类型信息,不给出数组大小等.

var_dumpprint_r根据我的经验,通常比调试时更有用.当您不确切知道变量中的值/类型时,它尤其有用.考虑这个测试程序:

$values = array(0, 0.0, false, '');

var_dump($values);
print_r ($values);
Run Code Online (Sandbox Code Playgroud)

随着print_r你不能告诉之间的区别00.0,或false'':

array(4) {
  [0]=>
  int(0)
  [1]=>
  float(0)
  [2]=>
  bool(false)
  [3]=>
  string(0) ""
}

Array
(
    [0] => 0
    [1] => 0
    [2] => 
    [3] => 
)
Run Code Online (Sandbox Code Playgroud)

  • "[回显和打印或多或少相同.它们都用于向屏幕输出数据.差别很小:回显没有返回值,而print的返回值为1,因此可以在表达式中使用.可以采用多个参数(虽然这种用法很少见),而打印可以采用一个参数.回声比打印快一点.](http://www.w3schools.com/php/php_echo_print.asp)" - 我相信你的'先生,我被抄袭了. (8认同)
  • 快,给律师手机! (5认同)
  • 两年后编辑,以纠正这些评论中指出的不准确之处.谢谢大家,我一定是在2010年6月7日睡觉了.;-) (3认同)

tho*_*ter 98

回声

  • 输出由逗号分隔的一个或多个字符串
  • 没有回报价值

    例如 echo "String 1", "String 2"

打印

  • 仅输出一个字符串
  • 返回1,因此可以在表达式中使用

    例如 print "Hello"

    要么, if ($expr && print "foo")

的print_r()

  • 输出任何一个值的人类可读表示
  • 不仅接受字符串,还接受其他类型,包括数组和对象,将它们格式化为可读
  • 调试时很有用
  • 如果给出第二个可选参数,则可以将其输出作为返回值(而不是回显)返回

的var_dump()

  • 输出由逗号分隔的一个或多个值的人类可读表示
  • 不仅接受字符串,还接受其他类型,包括数组和对象,将它们格式化为可读
  • 使用不同的输出格式print_r(),例如它还打印值的类型
  • 调试时很有用
  • 没有回报价值

var_export()

  • 输出任何一个值的人类可读和PHP可执行表示
  • 不仅接受字符串,还接受其他类型,包括数组和对象,将它们格式化为可读
  • 使用不同的输出格式都print_r()var_dump()-输出结果是合法的PHP代码!
  • 调试时很有用
  • 如果给出第二个可选参数,则可以将其输出作为返回值(而不是回显)返回

笔记:

  • 即使print可以在表达式中使用,我建议人们避免这样做,因为它对代码可读性有害(并且因为它不太可能有用).与其他运营商交互时的优先规则也可能令人困惑.因此,我个人没有理由使用它echo.
  • 鉴于echo并且print是语言结构,print_r()var_dump()/ var_export()是常规功能.您不需要括号将参数括起来echoprint(如果您使用它们,它们将被视为在表达式中).
  • 虽然var_export()返回有效的PHP代码允许稍后读取值,但依赖于此代码生成代码可能会因为需要使用而更容易引入安全漏洞eval().最好使用类似JSON的格式来存储和读回值.速度将具有可比性.

  • 只需快速说明何时需要`echo $ a,$ b;`语法,当你可以执行`echo $ a时.$ b;`:如果$ a或$ b是非常大的字符串,那么后者将使用额外的内存和时间在内存中创建一个单独的串联版本的字符串,然后才能开始输出到浏览器. (3认同)

ale*_*lex 16

只是为了添加John的答案,echo应该是您用来向页面打印内容的唯一答案.

print有点慢.var_dump()并且print_r()应该只用于调试.

另外值得一提的是,print_r()并且var_dump()默认情况下会回显print_r(),至少添加第二个参数,将其计算为true以使其返回,例如print_r($array, TRUE).

回声和返回之间的区别是:

  • echo:将立即将值打印到输出.
  • 返回:将函数的输出作为字符串返回.对记录等有用

  • 哇我希望我知道返回的参数:(基本上你可以做$ foo = print_r($ array,true);并以其他方式使用它(进入日志,表等) (2认同)

N R*_*awa 7

echoprintprint_rvar_dump之间的区别非常简单。

回声

echo实际上不是一个函数,而是一个用于打印输出的语言结构。它比打印略快。

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)
Run Code Online (Sandbox Code Playgroud)

您还可以使用带或不带括号的 echo 语句

echo ("Hello World");   // this will print Hello World
Run Code Online (Sandbox Code Playgroud)

打印

就像echo构造一样,print也是一种语言构造,而不是真正的函数。之间的差别回波打印打印 只接受一个参数,并打印总是返回1.鉴于回声没有返回值。所以print语句可以用在表达式中。

print "Hello World";    // this will print Hello World
print "Hello ","World"; // Multiple arguments - NOT POSSIBLE with print
$var_1=55;
print "$var_1";               // this will print 55
print "var_1=".$var_1;        // this will print var_1=55
print 45+$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)
Run Code Online (Sandbox Code Playgroud)

就像echo一样, print 可以带或不带括号使用。

print ("Hello World");   // this will print Hello World
Run Code Online (Sandbox Code Playgroud)

打印_r

所述的print_r()函数是用来打印人可读的一个变量的信息。如果参数是一个数组,print_r()函数打印它的键和元素(对象相同)。

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 ) 
Run Code Online (Sandbox Code Playgroud)

变量转储

var_dump函数通常用于调试和打印有关变量/数组/对象的信息(类型和值)。

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" }
Run Code Online (Sandbox Code Playgroud)