php 打印函数(echo , print, printf, print_f, var_dump)

php 打印函数(echo , print, printf, print_f, var_dump)

概要

  1. 了解php打印函数种类,简单实用以及功能区别
  2. 总结各个打印函数的实用场景以及相关最佳实践

函数介绍

1. echo
  • echo用于输出一个或者多个字符串, 不换行
  • 如果输出对象非字符串,会尝试将对象转成字符串, 转化失败则抛出异常
  • echo属于语法结构,而非函数
  • 使用
<?php
class Cls1 {
}

class Cls2 {
    public function  __toString() {
        return 'Cls2';
    }
}

echo "111"; // '111'

//数字类型转成string
echo 111; // '111'

//输出bool类型true被转成'1' , false转成''
echo true ;  // '1'
echo false; // ''

//输出对象,尝试调用对象__toString方法将对象序列化
echo (new Cls1);  // error: class Cls1 could not be converted to string
echo (new Cls2); // 'Cls2'

//输出输出多个变量(非字符串类型会被尝试转成字符串)
echo 22, "11", new Cls2; //  '2211Cls2'
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
2. print
  • print 属于语法结构,而非函数 (同echo)
  • print 一次只能接受一个字符串(区分与echo)
  • 其他效果同echo
  • 使用
<?php
print 'hello world';
 
 
  • 1
  • 2
  • 1
  • 2
3. print_r()
  • 用于 打印关于变量的易于理解的信息。(不包括变量类型信息)
  • 对于对象, 打印所有属性(public, protected, private)
  • 一次仅允许打印一个变量(区别于echo)
  • 使用
<?php
class Cls1 {
    public $var1 = 111;
    protected  $var2 = 222;
    private $var3 = 333;
    public function func() {}
}

$s = "111";

$n = 1;
$b = false;
$f = 1.1222;
$o = new Cls1();
$arr = ['1' => 1, "3", 5, $o];

print_r($s); // '111'
print_r($n); // 1
print_r($b); // ''
print_r($f); // 1.1222
print_r($arr);
/*
Array
(
    [1] => 1
    [2] => 3
    [3] => 5
    [4] => Cls1 Object
        (
            [var1] => 111
            [var2:protected] => 222
            [var3:Cls1:private] => 333
        )
)
*/

print_r($o);
/*
Cls1 Object
(
    [var1] => 111
    [var2:protected] => 222
    [var3:Cls1:private] => 333
)
*/

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
4. var_dump
  • 一个或多个表达式的结构信息 (print_r只打印一个表达式)
  • 输出包括 类型 与值(print_r() 不显示类型)
  • 使用
<?php
class Cls1 {
    public $var1 = 111;
    protected  $var2 = 222;
    private $var3 = 333;
    public function func() {}
}

$s = "111";

$n = 1;
$b = false;
$f = 1.1222;
$o = new Cls1();
$arr = ['1' => 1, "3", 5, $o];

var_dump($s); // string(3) "111"

var_dump($n); // int(1)

var_dump($b); // bool(false)

var_dump($f); // float(1.1222)

var_dump($arr);
/*
array(4) {
  [1]=>
  int(1)
  [2]=>
  string(1) "3"
  [3]=>
  int(5)
  [4]=>
  object(Cls1)#1 (3) {
    ["var1"]=>
    int(111)
    ["var2":protected]=>
    int(222)
    ["var3":"Cls1":private]=>
    int(333)
  }
}

*/

var_dump($o);
/*
object(Cls1)#1 (3) {
  ["var1"]=>
  int(111)
  ["var2":protected]=>
  int(222)
  ["var3":"Cls1":private]=>
  int(333)
}

*/


var_dump($s, $n, $b, $f);
/*
string(3) "111"
int(1)
bool(false)
float(1.1222)
*/
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
5. 其他
  • printf(): 用于格式化输出的场景
  • sprintf() 用于格式化字符串场景, 较printf()区别在于,前者直接输出到标准输出, 后者字符串以变量形式返回
  • 使用
<?php
$n = 11;
$s = "22";
$f = "22";

printf("%d%s%f", $n, $s, $f); // 112222.000000

$s2 = sprintf("%d%s%f", $n, $s, $f);
echo $s2; // 112222.000000
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

最佳实践 (服务调试)

  1. 不使用print, 可用echo 替代
  2. 由于echo只能输出简单的字符串,需要了解变量详细信息不用echo, 建议使用print_r(), var_dump() (个人更偏爱var_dump)
  3. 调试信息输出到浏览器, 尝试添加 echo '<pre>'; 产生更友好的信息显示

相关资料

What’s the difference between echo, print, and print_r in PHP? 
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较

原文地址:http://blog.csdn.net/huiseguiji1/article/details/50364161

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值