本篇笔记记录了php中echo,print,print_r,var_dump,var_export的功能、传入参数、返回值等区别,并通过范例加深了解。
功能梳理
名称 | 功能 |
---|---|
echo | 用于输出一个或多个字符串;是语言结构而不是函数;可以不使用小括号来指明参数,多个参数时不能使用小括号;支持快捷用法=$foo?>;没有返回值 |
用于输出一个字符串;是语言结构而不是函数;只支持一个参数,可以不使用小括号;返回值总是1 | |
print_r | 以人易于理解的格式打印变量;当第二个参数设置成TRUE时,返回而不打印,否则打印信息并返回TRUE |
var_dump | 打印一个或多个变量的信息,并且带有类型;没有返回值 |
var_export | 打印变量的PHP代码表示的结构信息;第二个参数设置为TRUE时,返回而不打印,否则打印信息 |
echo和print比较
相同点:
1.都不是函数,而是语言结构。
2.都用于打印字符串。
3.都不能直接用于可变函数调用,如:
<?php
$param="echo";
$param("str");
这是不允许的。
不同点:
1.echo可以打印多个字符串,print只能打印一个字符串。
2.echo没有返回值,print固定返回1。
3.print不支持快捷用法。
范例:
<?php
$a = "str-a";
$b = "str-b";
$c = "str-c";
//
echo ($a);
$ret = print($a);
var_dump($ret);
echo $b;
print $b;
echo $a,$b,$c;
打印结果:
str-a
str-a
int(1)
str-b
str-b
str-astr-bstr-c
print_r,var_dump和var_export比较
相同点:
1.都用于打印变量。
2.打印对象时都不显示静态属性
不同点:
1.print_r打印变量不带类型,var_dump打印变量带有类型,var_export打印变量是以php代码表示的信息。
2.var_dump可以打印多个变量,print_r和var_export只能打印一个变量。
3.print_r有返回值,var_dump没有返回值,var_export可以设置有返回值。
范例:
打印字符串
<?php
$a = "str-a";
echo "-------开始打印-------";
$val1 = print_r($a);
$val2 = var_dump($a);
$val3 = var_export($a);
echo "-------打印返回值-------";
var_dump($val1, $val2, $val3);
echo "-------开始打印-------";
$val1 = print_r($a, true);
$val3 = var_export($a, true);
echo "-------打印返回值-------";
var_dump($val1, $val3);
输出
-------开始打印-------
str-a
string(5) "str-a"
'str-a'
-------打印返回值-------
bool(true)
NULL
NULL
-------开始打印-------
-------打印返回值-------
string(5) "str-a"
string(7) "'str-a'"
打印数组
<?php
$a = array("a" => "str-a", "b" => "str-b");
echo "-------开始打印-------";
$val1 = print_r($a);
$val2 = var_dump($a);
$val3 = var_export($a);
echo "-------打印返回值-------";
var_dump($val1, $val2, $val3);
echo "-------开始打印-------";
$val1 = print_r($a, true);
$val3 = var_export($a, true);
echo "-------打印返回值-------";
var_dump($val1, $val3);
输出
-------开始打印-------
Array
(
[a] => str-a
[b] => str-b
)
array(2) {
["a"]=>
string(5) "str-a"
["b"]=>
string(5) "str-b"
}
array (
'a' => 'str-a',
'b' => 'str-b',
)
-------打印返回值-------
bool(true)
NULL
NULL
-------开始打印-------
-------打印返回值-------
string(44) "Array
(
[a] => str-a
[b] => str-b
)
"
string(45) "array (
'a' => 'str-a',
'b' => 'str-b',
)"
打印对象
<?php
class testClass{
private $a = "str-a";
protected $b = "str-b";
public $c = "str-c";
static $d = "str-d";
}
$b = new testClass();
echo "-------开始打印-------";
$val1 = print_r($b);
$val2 = var_dump($b);
$val3 = var_export($b);
echo "-------打印返回值-------";
var_dump($val1, $val2, $val3);
输出
-------开始打印-------
testClass Object
(
[a:testClass:private] => str-a
[b:protected] => str-b
[c] => str-c
)
object(testClass)#1 (3) {
["a":"testClass":private]=>
string(5) "str-a"
["b":protected]=>
string(5) "str-b"
["c"]=>
string(5) "str-c"
}
testClass::__set_state(array(
'a' => 'str-a',
'b' => 'str-b',
'c' => 'str-c',
))
-------打印返回值-------
bool(true)
NULL
NULL
打印资源
<?php
$c = fopen("test.php","r");
echo "-------开始打印-------";
$val1 = print_r($c);
$val2 = var_dump($c);
$val3 = var_export($c);
echo "-------打印返回值-------";
var_dump($val1, $val2, $val3);
输出
-------开始打印-------
Resource id #5
resource(5) of type (stream)
NULL
-------打印返回值-------
bool(true)
NULL
NULL