PHP打印函数

概要

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

函数介绍

1. echo

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

  2. class Cls1 {

  3. }

  4.  
  5. class Cls2 {

  6. public function __toString() {

  7. return 'Cls2';

  8. }

  9. }

  10.  
  11. echo "111"; // '111'

  12.  
  13. //数字类型转成string

  14. echo 111; // '111'

  15.  
  16. //输出bool类型true被转成'1' , false转成''

  17. echo true ; // '1'

  18. echo false; // ''

  19.  
  20. //输出对象,尝试调用对象__toString方法将对象序列化

  21. echo (new Cls1); // error: class Cls1 could not be converted to string

  22. echo (new Cls2); // 'Cls2'

  23.  
  24. //输出输出多个变量(非字符串类型会被尝试转成字符串)

  25. echo 22, "11", new Cls2; // '2211Cls2'

2. print

  • print 属于语法结构,而非函数 (同echo)
  • print 一次只能接受一个字符串(区分与echo)
  • 其他效果同echo
  • 使用
  1. <?php

  2. print 'hello world';

3. print_r()

  • 用于 打印关于变量的易于理解的信息。(不包括变量类型信息)
  • 对于对象, 打印所有属性(public, protected, private)
  • 一次仅允许打印一个变量(区别于echo)
  • 使用
  1. <?php

  2. class Cls1 {

  3. public $var1 = 111;

  4. protected $var2 = 222;

  5. private $var3 = 333;

  6. public function func() {}

  7. }

  8.  
  9. $s = "111";

  10.  
  11. $n = 1;

  12. $b = false;

  13. $f = 1.1222;

  14. $o = new Cls1();

  15. $arr = ['1' => 1, "3", 5, $o];

  16.  
  17. print_r($s); // '111'

  18. print_r($n); // 1

  19. print_r($b); // ''

  20. print_r($f); // 1.1222

  21. print_r($arr);

  22. /*

  23. Array

  24. (

  25. [1] => 1

  26. [2] => 3

  27. [3] => 5

  28. [4] => Cls1 Object

  29. (

  30. [var1] => 111

  31. [var2:protected] => 222

  32. [var3:Cls1:private] => 333

  33. )

  34. )

  35. */

  36.  
  37. print_r($o);

  38. /*

  39. Cls1 Object

  40. (

  41. [var1] => 111

  42. [var2:protected] => 222

  43. [var3:Cls1:private] => 333

  44. )

  45. */

4. var_dump

  • 一个或多个表达式的结构信息 (print_r只打印一个表达式)
  • 输出包括 类型 与值(print_r() 不显示类型)
  • 使用
  1. <?php

  2. class Cls1 {

  3. public $var1 = 111;

  4. protected $var2 = 222;

  5. private $var3 = 333;

  6. public function func() {}

  7. }

  8.  
  9. $s = "111";

  10.  
  11. $n = 1;

  12. $b = false;

  13. $f = 1.1222;

  14. $o = new Cls1();

  15. $arr = ['1' => 1, "3", 5, $o];

  16.  
  17. var_dump($s); // string(3) "111"

  18.  
  19. var_dump($n); // int(1)

  20.  
  21. var_dump($b); // bool(false)

  22.  
  23. var_dump($f); // float(1.1222)

  24.  
  25. var_dump($arr);

  26. /*

  27. array(4) {

  28. [1]=>

  29. int(1)

  30. [2]=>

  31. string(1) "3"

  32. [3]=>

  33. int(5)

  34. [4]=>

  35. object(Cls1)#1 (3) {

  36. ["var1"]=>

  37. int(111)

  38. ["var2":protected]=>

  39. int(222)

  40. ["var3":"Cls1":private]=>

  41. int(333)

  42. }

  43. }

  44.  
  45. */

  46.  
  47. var_dump($o);

  48. /*

  49. object(Cls1)#1 (3) {

  50. ["var1"]=>

  51. int(111)

  52. ["var2":protected]=>

  53. int(222)

  54. ["var3":"Cls1":private]=>

  55. int(333)

  56. }

  57.  
  58. */

  59.  
  60.  
  61. var_dump($s, $n, $b, $f);

  62. /*

  63. string(3) "111"

  64. int(1)

  65. bool(false)

  66. float(1.1222)

  67. */

5. 其他

  • printf(): 用于格式化输出的场景
  • sprintf() 用于格式化字符串场景, 较printf()区别在于,前者直接输出到标准输出, 后者字符串以变量形式返回
  • 使用
  1. <?php

  2. $n = 11;

  3. $s = "22";

  4. $f = "22";

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

  7.  
  8. $s2 = sprintf("%d%s%f", $n, $s, $f);

  9. echo $s2; // 112222.000000

最佳实践 (服务调试)

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

猜你喜欢

转载自blog.csdn.net/qq_19004627/article/details/86573650