PHP中的echo,print和print_r有什么区别?
我使用echo
和print_r
很多,几乎从不使用print
。
我觉得echo
是一个macros,而print_r
是var_dump
的别名。
但这不是解释差异的标准方法。
print
和echo
大致相同; 他们都是显示string的语言结构。 差异是微妙的: print
有一个返回值1,所以它可以在expression式中使用,而echo
具有void
返回types; echo
可以采取多个参数,虽然这种使用是罕见的; echo
比print
稍快 。 (就个人而言,我总是使用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
你不能区分0
和0.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
。 - 而
echo
和print
是语言结构,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器,那么输出的结果将以更易读易懂的方式进行格式化。