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

php
2022-08-30 06:23:09

我使用和很多,几乎从不使用.echoprint_rprint

我觉得是一个宏,并且是 的别名。echoprint_rvar_dump

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


答案 1

print并且或多或少相同;它们都是显示字符串的语言构造。差异是微妙的:返回值为1,因此可以在表达式中使用,而具有返回类型; 可以采用多个参数,尽管这种用法很少见;回声打印速度略快。(就个人而言,我总是使用,从不。echoprintechovoidechoechoprint

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

var_dump根据我的经验,通常比调试时更有用。当您不知道变量中的确切值/类型时,它特别有用。请考虑以下测试程序:print_r

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

var_dump($values);
print_r ($values);

用你无法分辨和之间的区别,或者和:print_r00.0false''

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

Array
(
    [0] => 0
    [1] => 0
    [2] => 
    [3] => 
)

答案 2

回波

  • 输出一个或多个以逗号分隔的字符串
  • 无返回值

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

打印

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

    例如:print "Hello"

    if ($expr && print "foo")

print_r()

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

var_dump()

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

var_export()

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

笔记:

  • 尽管可以在表达式中使用,但我建议人们避免这样做,因为它不利于代码的可读性(并且因为它不太可能有用)。与其他运算符交互时的优先规则也可能令人困惑。因此,我个人没有理由使用它。printecho
  • 而 和 是语言构造,和 / 是正则函数。您不需要括号将参数括在 或 中(如果您确实使用它们,它们将像在表达式中一样处理)。echoprintprint_r()var_dump()var_export()echoprint
  • 虽然返回允许稍后回读值的有效 PHP 代码,但依赖此作为生产代码可能会使由于需要使用 而更容易引入安全漏洞。最好使用像 JSON 这样的格式来存储和读回值。速度将相当。var_export()eval()

推荐