PHP中的輸出:echo、print、printf、sprintf、p
大家在面試中,經常會被問到的問題:
> 請簡要說明PHP的列印方式都有哪些?
或者直接點問:
> 請說明echo、print、print_r的區別
看著很簡單,一般會出現在初中級的筆試題中。但是要真正說明白這些語言結構或者函式也不是那麼簡單的事情。今天我們就來好好看看這些列印輸出相關的內容。
echo
最基礎的輸出語句,不是函式是語言結構,不需要括號。可以使用引數列表,用逗號分隔。但如果加了括號就不能用逗號分隔著輸出了。沒有返回值。
echo 'fullstackpm'; // 正常輸出:fullstackpm
echo 'fullstackpm', ' is ', 'Good!'; // 正常輸出:fullstackpm is Good!
echo ('fullstackpm'); // 正常輸出:fullstackpm
echo ('fullstackpm', ' is ', 'Good!'); // 報錯了
基本和echo一樣,但是不支援引數列表,有返回值。返回值永遠是1。
因為有返回值,所以相對來說效率不如echo
print 'fullstackpm'; // 正常輸出:fullstackpm
print 'fullstackpm', ' is ', '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",
1 => "b",
"3" => "c",
"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',
)
*/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4328/viewspace-2826645/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- printf 中 % 別代表的輸出型別型別
- c裡面的printf, fprintf, sprintf, snprintf, printf_s, fprintf_s, sprintf_s, snprintf_s一問說清所有各種printf
- Shell學習【printf與echo】
- printf 重新整理輸出
- Print輸出顏色字型方法
- Python 3 進階 —— print 列印和輸出Python
- 使用pycharm print不輸出怎麼辦PyCharm
- printf十六進位制輸出64位值的方法
- C語言可變引數以及printf()、sprintf()、vsprintf() 的區別與聯絡C語言
- 在linux中如何使用echo 輸出帶有字型顏色呢Linux
- 如何用python3輸出print對齊?Python
- 很奇怪,echo substr ('470482916035',-6);// 輸出是 035
- PHP sprintf()格式化用法詳解PHP
- flink的print()函式輸出的都是物件地址而非物件內容函式物件
- PHP的輸出緩衝區PHP
- windows bat系列8:echo詳解與DOS輸出空行WindowsBAT
- printf()將10進位制數安照輸出16進位制,8進位制輸出
- printf與scanf如何輸出、輸入十六進位制與八進位制數
- Linux基礎命令---echo列印內容到標準輸出Linux
- php nginx 實時輸出PHPNginx
- pythn print格式化輸出———“%s 和 % d” 都是什麼意思?
- GitHub 熱門:別再用 print 輸出來除錯程式碼了Github除錯
- 洛谷P1157 組合的輸出
- Python print函式控制檯中文輸出16進位制問題Python函式
- PHP 安全輸入輸出方式 「防止 XSS 注入」PHP
- 深入淺出 Laravel EchoLaravel
- 【原創】linux實時應用如何printf輸出不影響實時性?Linux
- linux中的輸入與輸出管理(重定向輸入,輸出,管道符)Linux
- 51微控制器:P3.3口輸入/P 1口輸出實驗
- Blade 模板,輸出 PHP 變數到 JavaScript 指令碼中的正確方式PHP變數JavaScript指令碼
- PHP 輸出緩衝區應用PHP
- 使用P6Spy監控你的SQL輸出SQL
- 重學java中的輸入輸出流Java
- PHP輸出金字塔及空心菱形PHP
- golang 解析php輸出json相容問題GolangPHPJSON
- 詳解Java中的IO輸入輸出流!Java
- 請問在一個命令上加什麼引數可以實現下面命令的內容在同一行輸出。 echo “zhaokang”;echo “zhaokang”
- Dragonfly 中 P2P 傳輸協議最佳化Go協議