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

我使用echoprint_r很多,几乎从不使用print

我觉得echo是一个macros,而print_rvar_dump的别名。

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

printecho大致相同; 他们都是显示string的语言结构。 差异是微妙的: print有一个返回值1,所以它可以在expression式中使用,而echo具有void返回types; echo可以采取多个参数,虽然这种使用是罕见的; echoprint稍快 。 (就个人而言,我总是使用echo ,从不print 。)

var_dump打印一个variables的详细转储,包括它的types和任何子项的types(如果它是一个数组或对象)。 print_r以更易于理解的forms打印variables:不引用string,省略types信息,不给出数组大小等。

根据我的经验, var_dump在debugging时通常比print_r更有用。 当你不确切地知道你的variables中有什么值或types时,它特别有用。 考虑这个testing程序:

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

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] => ) 

回声

  • 输出一个或多个以逗号分隔的string
  • 没有回报价值

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

打印

  • 只输出一个string
  • 返回1 ,所以可以在expression式中使用

    例如print "Hello"

    或者, if ($expr && print "foo")

的print_r()

  • 输出任何一个值的人类可读表示
  • 接受不只是string,而是包括数组和对象在内的其他types,格式化它们是可读的
  • debugging时很有用
  • 如果给出第二个可选参数,可以返回它的输出作为返回值(而不是回显)

的var_dump()

  • 输出由逗号分隔的一个或多个值的人类可读表示
  • 接受不只是string,而是包括数组和对象在内的其他types,格式化它们是可读的
  • 使用不同的输出格式print_r() ,例如它也打印值的types
  • debugging时很有用
  • 没有回报价值

var_export()

  • 输出任何一个值的人类可读和PHP可执行的表示
  • 接受不只是string,而是包括数组和对象在内的其他types,格式化它们是可读的
  • print_r()var_dump()使用不同的输出格式 – 结果输出是有效的PHP代码!
  • debugging时很有用
  • 如果给出第二个可选参数,可以返回它的输出作为返回值(而不是回显)

笔记:

  • 尽pipe可以在expression式中使用print ,但是我build议人们避免这样做,因为它不利于代码的可读性(因为它不太可能有用)。 与其他运营商交互时的优先规则也可能令人困惑。 因此,我个人从来没有理由使用它echo
  • echoprint是语言结构, print_r()var_dump() / var_export()是常规函数。 你不需要用圆括号把参数括起来来回显或者print (如果你真的使用它们,它们将会像在expression式中一样被处理)。
  • 虽然var_export()返回有效的PHP代码,以便稍后可以读取值,但依靠此方法进行生产代码可能会更容易引入安全漏洞,因为需要使用eval() 。 最好使用像JSON这样的格式来存储和读取值。 速度将是可比的。

只要添加到约翰的答案 , echo应该是你用来打印内容到页面的唯一的一个。

print速度稍慢。 var_dump()print_r()只能用于debugging。

另外值得一提的是, print_r()var_dump()会默认回显,给print_r()添加第二个参数,至less返回true,让它返回,例如print_r($array, TRUE)

回声和返回的区别是:

  • 回声:将立即打印输出的值。
  • 返回:将函数的输出作为string返回。 用于logging等
 echo 

没有返回types

 print 

有返回types

 print_r() 

输出格式,

回声

它是声明不是函数没有返回值

不需要括号

不打印数组

打印

这是真正的function

返回types1

需要括号

不打印数组

的print_r

以可读格式打印

string不在行情

不是像types和所有variables的详细信息

的var_dump

所有types的元素和子元素的variables的转储信息

echo:echo是一种语言结构,不需要使用圆括号,它可以接受任意数量的参数并返回void。

  void echo (param1,param2,param3.....); Example: echo "test1","test2,test3"; 

print:它是一个语言结构,不需要使用括号,只需要一个参数并返回

  1 always. int print(param1); print "test1"; print "test1","test2"; // It will give syntax error 

prinf:这是一个至less包含一个string和格式样式并返回输出string长度的函数。

  int printf($string,$s); $s= "Shailesh"; $i= printf("Hello %s how are you?",$s); echo $i; Output : Hello Shailesh how are you? 27 echo returns void so its execution is faster than print and printf 

** Echocan接受多个expression,而打印不能。 Print_r()PHP函数用于以可读forms返回数组。 它简写为

 ![Print_r ($your_array)][1] 

print_r()用于以可读格式打印数组。

他们都是语言结构。 回声返回无效和打印返回1.回声被认为比打印稍快。

print_r()可以输出值,但是如果第二个标志参数被传递并且是TRUE,它将以string的forms返回打印的结果,而不发送给标准输出。 关于var_dump。 如果安装了XDebugdebugging器,那么输出的结果将以更易读易懂的方式进行格式化。