我用echo和print_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你不能告诉之间的区别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] =>
)
Run Code Online (Sandbox Code Playgroud)
tho*_*ter 98
回声
没有回报价值
例如 echo "String 1", "String 2"
打印
返回1,因此可以在表达式中使用
例如 print "Hello"
要么, if ($expr && print "foo")
的print_r()
的var_dump()
print_r(),例如它还打印值的类型var_export()
print_r()和var_dump()-输出结果是合法的PHP代码!笔记:
print可以在表达式中使用,我建议人们避免这样做,因为它对代码可读性有害(并且因为它不太可能有用).与其他运营商交互时的优先规则也可能令人困惑.因此,我个人没有理由使用它echo.echo并且print是语言结构,print_r()和var_dump()/ var_export()是常规功能.您不需要括号将参数括起来echo或print(如果您使用它们,它们将被视为在表达式中).var_export()返回有效的PHP代码允许稍后读取值,但依赖于此代码生成代码可能会因为需要使用而更容易引入安全漏洞eval().最好使用类似JSON的格式来存储和读回值.速度将具有可比性.ale*_*lex 16
只是为了添加John的答案,echo应该是您用来向页面打印内容的唯一答案.
print有点慢.var_dump()并且print_r()应该只用于调试.
另外值得一提的是,print_r()并且var_dump()默认情况下会回显print_r(),至少添加第二个参数,将其计算为true以使其返回,例如print_r($array, TRUE).
回声和返回之间的区别是:
echo、print、 print_r和var_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)
小智 6
echo
Run Code Online (Sandbox Code Playgroud)
没有返回类型
print
Run Code Online (Sandbox Code Playgroud)
有退货类型
print_r()
Run Code Online (Sandbox Code Playgroud)
输出格式化,