PHP---各種輸出詳解

php輸出echo、print、print_r、printf、sprintf、var_dump、dump的區別比較
1、echo

echo() 實際上不是一個函數,是php語句,因此您無需對其使用括號。
不過, echo() 只能傳遞一個參數,如果寫多個參數,那麼使用括號會發生解析錯誤。
echo是返回void的,並不返回值,所以不能使用它來賦值。

$a = echo("words"); // 錯誤!不能用來賦值
echo "words"; // words
echo ("words"); // words
echo ("apple","bear"); //發生錯誤,有括號不能傳遞多個參數
echo "I","LOVE","YOU";  // 不用括號的時候可以用逗號隔開多個值, 會輸出 ILOVEYOU 不管是否換行,最終顯示都是爲一行
$name="holle";
echo "$name word"; // 如果 $name = "holle", 則會輸出 holle word.
echo '$name word'; // 由於使用單引號,所以不會輸出$name的值,而是輸出 $name com

2、print

print() 和 echo() 用法一樣,但是echo速度會比print快一點點。
實際上它也不是一個函數,因此您無需對其使用括號。
和echo()一樣,print()只能傳遞一個參數,如果寫多個參數,那麼使用括號會發生解析錯誤。
注意print總是返回1的,這個和echo不一樣, 也就是說可以使用print來賦值,不過沒有實際意義。

$a = print("holle word"); // 這個是允許的
echo $a; // $a的值是1

3、print_r

print_r函數打印關於變量的易於理解的信息。
print_r總是返回1的,也就是說可以使用print_r來賦值,不過沒有實際意義。
將會直接輸出其值,如果變量是一個數組,則會輸出一個格式化後的數組,便於閱讀, 也就是有key和value對應的那種格式。
print_r有兩個參數,第一個是變量,第二個可設爲true,如果設 爲true,則會返回字符串,否則返回布爾值TRUE。

$a="holle word";
$c = print_r($a);
echo $c;  // $c的值是1
$d = print_r($a,true);
echo $d; // $c的值是字符串holle word

4、printf

printf函數返回一個格式化後的字符串, 是轉換的格式,以百分比符號 (“%”) 開始到轉換字符結束。
下面是可能的 format 值:

  • %% – 返回百分比符號
  • %b – 二進制數
  • %c – 依照 ASCII 值的字符
  • %d – 帶符號十進制數
  • %e – 可續計數法(比如 1.5e+3)
  • %u – 無符號十進制數
  • %f – 浮點數(local settings aware)
  • %F – 浮點數(not local settings aware)
  • %o – 八進制數
  • %s – 字符串
  • %x – 十六進制數(小寫字母)
  • %X – 十六進制數(大寫字母)
printf("My name is %s %s。","張", "三"); // My name is 張 三。
printf("My name is %1\$s %1\$s","張", "三");// 在s前添加1\$或2\$.....表示後面的參數顯示的位置,此行輸出 My name is 張 三 ,因爲只顯示第一個參數兩次。
printf("My name is %2\$s %1\$s","張", "三"); // My name is 三 張

拓展:sprintf

此函數使用方法和printf一樣,唯一不同的就是該函數把格式化的字符串寫寫入一個變量中,而不是輸出來。

sprintf("My name is %1\$s %1\$s","張", "三");  //你會發現沒有任何東西輸出的。
$a  = sprintf("My name is %1\$s %2\$s","張", "三");
echo $a;  //輸出 My name is 張 三

5、var_dump

輸出變量的內容、類型或字符串的內容、類型、長度。常用來調試。(可以輸出任何變量)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章