PHP中的輸出echo、print、printf、sprintf、print_r和var_dump的示例程式碼
大家在面試中,經常會被問到的問題:
請簡要說明PHP的列印方式都有哪些?
或者直接點問:
請說明echo、print、print_r的區別
看著很簡單,一般會出現在初中級的筆試題中。但是要真正說明白這些語言結構或者函式也不是那麼簡單的事情。今天我們就來好好看看這些列印輸出相關的內容。
echo
最基礎的輸出語句,不是函式是語言結構,不需要括號。可以使用引數列表,用逗號分隔。但如果加了括號就不能用逗號分隔著輸出了。沒有返回值。
echo 'fullstackpm'; // 正常輸出:fullstackpm echo 'fullstackpm',' is ','Good!'; // 正常輸出:fullstackpm is Good! echo ('fullstackpm'); // 正常輸出:fullstackpm echo ('fullstackpm','Good!'); // 報錯了
基本和echo一樣,但是不支援引數列表,有返回值。返回值永遠是1。
因為有返回值,所以相對來說效率不如echo
print 'fullstackpm'; // 正常輸出:fullstackpm print 'fullstackpm','Good!'; // 錯誤 $r = print ('fullstackpm'); // 正常輸出:fullstackpm print $r; // 輸出1
printf和sprintf
兩個很高大上的函式,可以格式化輸出字串。用%標明佔位符,後面的引數對應進行佔位符的替換。printf和sprintf的區別就是前者直接進行了輸出,而後者是將字串進行了函式返回。請看例項。
$str = 'My name is %s,I\'m %d years old.'; printf($str,'fullstackpm',1002); // 直接輸出:My name is fullstackpm,I'm 1002 years old. $s = sprintf($str,'WoW',12); // 這裡不會輸出 print $s; // 輸出:My name is WoW,I'm 12 years old.
你最少要記住的,%s代表字串,%d代表數字,%f是浮點數,%%是輸出%本身,其他還有許多型別可以檢視相關文件。另外還有類似的幾個:
- vprintf,他的第二個引數是一個數組,不是可變長度的引數。
- sscanf,對於一些特殊字元處理方式不同。
- fscanf,從文件中讀取並進行格式化。
print_r
非常常用的一個函式,可以格式化的輸出陣列或物件。注意第二個引數設定為true,可以不直接輸出而是進行函式返回。
$str = [ "a",1 => "b","3" => "c","show"=>'d' ]; print_r($str) // 輸出 /** Array ( [0] => a [1] => b [3] => c [show] => d ) */ $s = print_r($str,true); // 此處不會輸出 echo $s; // 輸出 // 注意,輸出流不在ob_start()中,測試本段請不要有其他任何輸出 /** Array ( [0] => a [1] => b [3] => c [show] => d ) */
var_dump和var_exports
var_dump也是非常常用的一個函式,用來顯示結構資訊,包括型別與值,陣列物件都會展開,用縮排表示層次。var_exports與之不同的地方在於var_exports返回的內容是正常的PHP程式碼,可以直接使用,並且有和print_r類似的第二個return引數,作用也類似。
$str = [ "a","show"=>'d' ]; var_dump($str); // 輸出 /** array(4) { [0] => string(1) "a" [1] => string(1) "b" [3] => string(1) "c" 'show' => string(1) "d" } */ var_export($str); // 輸出 /** array ( 0 => 'a',1 => 'b',3 => 'c','show' => 'd',) */
到此這篇關於PHP中的輸出echo、print、printf、sprintf、print_r和var_dump的示例程式碼的文章就介紹到這了,更多相關PHP輸出echo、print、printf、sprintf、print_r和var_dump內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!