關於php列印函數我們需要瞭解php列印函數種類,簡單實用以及功能區別,總結各個列印函數的實用情境以及相關最佳實務。
函數介紹
1. echo
<?phpclass Cls1 {}class Cls2 { public function __toString() { return 'Cls2'; }}echo "111"; // '111'//數字類型轉成stringecho 111; // '111'//輸出bool類型true被轉成'1' , false轉成''echo true ; // '1'echo false; // '' //輸出對象,嘗試調用對象__toString方法將對象序列化echo (new Cls1); // error: class Cls1 could not be converted to stringecho (new Cls2); // 'Cls2' //輸出輸出多個變數(非字串類型會被嘗試轉成字串)echo 22, "11", new Cls2; // '2211Cls2'
2. print
<?phpprint 'hello world';
3. print_r()
用於 列印關於變數的易於理解的資訊。(不包括變數類型資訊)
對於對象, 列印所有屬性(public, protected, private)
一次僅允許列印一個變數(區別於echo)
使用
<?phpclass 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</span> = [<span class="hljs-string">'1'</span> => <span class="hljs-number">1</span>, <span class="hljs-string">"3"</span>, <span class="hljs-number">5</span>, <span class="hljs-variable">$o];print_r($s); // '111'print_r($n); // 1print_r($b); // ''print_r($f); // 1.1222print_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)*/
4. var_dump
<?phpclass 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</span> = [<span class="hljs-string">'1'</span> => <span class="hljs-number">1</span>, <span class="hljs-string">"3"</span>, <span class="hljs-number">5</span>, <span class="hljs-variable">$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</span>, <span class="hljs-variable">$n, $b</span>, <span class="hljs-variable">$f);/*string(3) "111"int(1)bool(false)float(1.1222)*/
5. 其他
<?php$n = 11;$s = "22";$f = "22";printf("%d%s%f", $n</span>, <span class="hljs-variable">$s, $f); // 112222.000000$s2</span> = <span class="hljs-keyword">sprintf</span>(<span class="hljs-string">"<span class="hljs-variable">%d</span><span class="hljs-variable">%s</span><span class="hljs-variable">%f</span>"</span>, <span class="hljs-variable">$n, $s</span>, <span class="hljs-variable">$f);echo $s2; // 112222.000000
最佳實務 (服務調試)
不使用print, 可用echo 替代
由於echo只能輸出簡單的字串,需要瞭解變數詳細資料不用echo, 建議使用print_r(), var_dump() (個人更偏愛var_dump)
調試資訊輸出到瀏覽器, 嘗試添加 echo '<pre>'; 產生更友好的資訊顯示
4. var_dump
<?phpclass 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</span> = [<span class="hljs-string">'1'</span> => <span class="hljs-number">1</span>, <span class="hljs-string">"3"</span>, <span class="hljs-number">5</span>, <span class="hljs-variable">$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</span>, <span class="hljs-variable">$n, $b</span>, <span class="hljs-variable">$f);/*string(3) "111"int(1)bool(false)float(1.1222)*/