大家在面試中,經常會被問到的問題:
請簡要說明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',
)
*/
本文由博客群發一文多發等運營工具平臺 OpenWrite 發布
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/228393.html
標籤:PHP
上一篇:[Git] git version 2以上git add .和git add -A 一樣
下一篇:PHP中的那些魔術常量
