我用echo
和print_r
多,而且几乎从来不使用print
。
我感觉echo
是一个宏,并且print_r
是的别名var_dump
。
但这不是解释差异的标准方法。
我用echo
和print_r
多,而且几乎从来不使用print
。
我感觉echo
是一个宏,并且print_r
是的别名var_dump
。
但这不是解释差异的标准方法。
Answers:
print
和echo
或多或少是相同的; 它们都是显示字符串的语言构造。的差异是细微的:print
具有1的返回值,因此它可以在表达式中使用,而echo
具有void
返回类型; echo
可以使用多个参数,尽管这种用法很少见;echo
比快一点print
。(就我个人而言,我总是使用echo
,从不print
。)
var_dump
打印出变量的详细转储,包括变量的类型和任何子项的类型(如果是数组或对象)。print_r
以更易于理解的形式打印变量:不引号,不省略类型信息,不提供数组大小等。
var_dump
print_r
根据我的经验,通常比调试时有用。当您不完全知道变量中具有哪些值/类型时,它特别有用。考虑以下测试程序:
$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] =>
)
回声
没有返回值
例如 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之类的格式来存储和读取值。速度将是可比的。echo $a, $b;
语法echo $a . $b;
:如果$ a或$ b是很大的字符串,则后者会占用额外的内存,并且会花一些时间在内存中创建字符串的单独串联版本可以开始输出到浏览器。
echo $a; echo $b;
。
仅添加到John的答案中,echo
应该是您用来在页面上打印内容的唯一方法。
print
稍微慢一点。var_dump()
并且print_r()
只能用于调试。
还值得一提的是,print_r()
并且var_dump()
默认情况下会回显print_r()
,请至少在其上添加第二个参数,该参数的计算结果为true,以使其返回,例如print_r($array, TRUE)
。
回声和返回之间的区别是:
echo
ing和return
ing有什么区别?
print_r
在编写PHP时,我已经使用了很多返回参数。但是,我倾向于写print_r( $foo, 1 );
。键入它会更快;)对此,我不太在意可读性,因为我发现该名称print_r
也不具有很好的描述性。
var_dump()
不支持第二个参数print_r()
,因为它var_dump()
可以接受多个参数以输出,因此它不像第二个参数那样返回值。
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)
您还可以使用带或不带括号的echo语句
echo ("Hello World"); // this will print Hello World
打印
就像echo构造打印一样,它也是一种语言构造,而不是真正的功能。之间的差别回波 和打印是 打印 只接受一个参数,并打印总是返回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)
就像echo一样, print 可以带或不带括号。
print ("Hello World"); // this will print Hello World
print_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 )
var_dump
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" }
回声:
是语句不是函数没有返回值
不需要括号
不打印阵列
打印
是实功能
返回类型1
必填括号
不打印阵列
打印_r
以人类可读的格式打印
字符串不在引号中
没有类型和全部变量的详细信息
var_dump
变量的所有转储信息,例如元素和子元素的类型
print
是不是一个真正的功能,它是一个语言结构就像回声。它也可以用作语句。 echo
是不是一份声明中,也不能在一个被使用。 print
它不要求括号,也没有任何回音或打印使用圆括号等不会的功能。您还错过了主要区别之一-echo接受多个字符串以逗号分隔回显。
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:该函数采用至少一个字符串和格式样式,并返回输出字符串的长度。
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