首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 輸出函數大比拼:echo、print、printf、sprintf、print_r、var_dump 詳解

     編輯:PHP 相關知識

快速對比表

函數類型返回值參數主要用途
echo語言結構無多個 (逗號分隔)高性能輸出字符串
print語言結構1 (int)單個可用於表達式上下文
printf函數輸出長度 (int)格式化字符串 + 多參數格式化輸出
sprintf函數格式化字符串格式化字符串 + 多參數格式化生成字符串
print_r函數bool/string變量 [, bool $return]結構化輸出數組/對象
var_dump函數無多個變量調試:類型、長度、值全顯示

詳細說明

1. echo - 最常用、最高性能

<?php
echo "Hello", " World"; // 多參數逗號分隔 (無括號時)
echo ("Hello World");   // 單參數可加括號
// echo ("Hello", "World"); // 錯誤:加括號只能單參數

$name = "PHP";
echo "Hello $name"; // 雙引號解析變量
echo 'Hello $name'; // 單引號不解析

// 無法用於賦值
// $a = echo "test"; // Parse error
?>

2. print - 唯一有返回值的輸出語言結構

<?php
$a = print("Hello"); // 合法,$a = 1
print "World";       // 輸出 World
// print "A", "B";    // 錯誤:只接受單參數
?>

3. printf / sprintf - C 風格格式化

<?php
// 常用格式符
printf("姓名: %s, 年齡: %d, 身高: %.2f\n", "張三", 25, 175.5);
// 姓名: 張三, 年齡: 25, 身高: 175.50

// 參數交換 (位置指定)
printf("第二: %2\$s, 第一: %1\$s\n", "A", "B");
// 第二: B, 第一: A

// sprintf 返回字符串不輸出
$sql = sprintf("SELECT * FROM users WHERE id = %d AND status = '%s'", 1, 'active');
// $sql = "SELECT * FROM users WHERE id = 1 AND status = 'active'"

// 格式符速查
// %s 字符串  %d 整數  %f 浮點數  %.2f 保留兩位小數
// %x 十六進制小寫  %X 大寫  %o 八進制  %b 二進制
// %c ASCII字符  %% 字面%  %e 科學計數法
?>

4. print_r - 結構化查看數組/對象

<?php
$arr = ['name' => 'PHP', 'ver' => [7, 8, 8]];
print_r($arr);
/* 輸出:
Array
(
    [name] => PHP
    [ver] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 8
        )
)
*/

// 第二參數 true 返回字符串
$str = print_r($arr, true);
file_put_contents('debug.log', $str);
?>

5. var_dump - 調試神器,顯示類型與長度

<?php
$str = "Hello";
var_dump($str); // string(5) "Hello"

$arr = [1, 2, 3];
var_dump($arr); 
/* array(3) {
  [0]=> int(1)
  [1]=> int(2)
  [2]=> int(3)
} */

$obj = new stdClass();
$obj->x = 1;
var_dump($obj); // object(stdClass)#1 (1) { ["x"]=> int(1) }

// 多變量一次調試
var_dump($str, $arr, $obj);
?>

進階:var_export - 可執行代碼輸出

<?php
$arr = ['a' => 1, 'b' => [2, 3]];
echo var_export($arr, true);
/* 輸出:
array (
  'a' => 1,
  'b' => 
  array (
    0 => 2,
    1 => 3,
  )
)
*/
// 可直接作為 PHP 代碼引入
?>

最佳實踐建議

  1. 一般輸出:優先用 `echo`,性能最好、語法靈活
  2. 表達式中需輸出:用 `print` (如 `!$success && print "Failed"`)
  3. 格式化輸出:`printf` 直接輸出,`sprintf` 生成 SQL/模板/日志字符串
  4. 開發調試:`var_dump` 看類型長度,`print_r` 看結構層次
  5. 生產日志:`var_export` 或 `json_encode` 記錄結構化數據
  6. 模板引擎:不直接用上述函數,交由模板引擎 (``、`{$var}`) 處理輸出

總結

理解六大輸出函數的類型差異 (語言結構 vs 函數)、返回值、參數特性、適用場景,能寫出更簡潔、高性能、可維護的 PHP 代碼。調試時善用 `var_dump`、`print_r`,生產輸出首選 `echo`。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved