PHP 提供多種輸出/檢視函數,各有回傳值、參數數量、格式化能力、用途差異。正確選用可提升開發除錯效率。
| 函數 | 類型 | 參數數量 | 回傳值 | 主要用途 | 輸出格式 |
|---|---|---|---|---|---|
echo | 語言結構 | 多個 (逗號分隔) | 無 | 一般字串輸出 | 原始字串 |
print | 語言結構 | 單一 | int (永遠 1) | 簡單輸出、可用於表達式 | 原始字串 |
print_r | 函數 | 1-2 (第2個 bool $return) | bool/string | 陣列/物件結構檢視 (人類可讀) | 縮排樹狀結構 |
var_dump | 函數 | 1 到多個 | 無 | 詳細型別+值檢視 (除錯) | 型別+長度+值 |
var_export | 函數 | 1-2 (第2個 bool $return) | string/NULL | 輸出合法 PHP 程式碼 (可 eval 還原) | PHP 代碼格式 |
sprintf | 函數 | 格式字串 + 多參數 | string | 格式化字串產生 (不直接輸出) | 依格式字串 |
<?php
echo 'Hello', ' ', 'World'; // 多參數,無回傳
print 'Hello World'; // 單參數,回傳 1
// print 可用於複雜表達式
$flag = (print 'test') && true; // $flag = true
<?php
$arr = ['a'=>'apple', 'b'=>'banana', 'c'=>['x','y','z']];
print_r($arr);
/* 輸出:
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
*/
// 取得字串而不輸出
$str = print_r($arr, true);
foreach 需先 reset()。<?php
$arr = [1, 2, ['a','b','c']];
var_dump($arr);
/* 輸出:
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}
*/
ob_start()) 捕獲輸出。<?php
$a = [1, 2, ['a','b','c']];
var_export($a);
/* 輸出:
array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
),
)
*/
// 取得字串
$code = var_export($a, true);
// 可直接 eval 還原
eval('$restored = ' . $code . ';');
NULL (無法序列化)。<?php
$num = 3.14159;
echo sprintf('Pi ≈ %.2f', $num); // Pi ≈ 3.14
// 類似 C 語言 printf,支援 %d %s %f %x %b 等格式
echo (效能最好)。print。var_dump (最詳細) 或 print_r (較簡潔)。var_export。sprintf/printf。