從我對echo(),print(),print_r()這個函數的理解是echo可輸入字符串變量常量,print與echo差不多,但print_r可以打印數組而前兩者是不可以的,下面我來詳細介紹它們三個的用法與區別吧。
echo是PHP語句, print和print_r是函數,語句沒有返回值,函數可以有返回值(即便沒有用)
print() 只能打印出簡單類型變量的值(如int,string)
print_r() 可以打印出復雜類型變量的值(如數組,對象)
echo 輸出一個或者多個字符串
echo — 輸出一個或者多個字符串
Descrīption
void echo ( string arg1 [, string ...] ) //返回值為空
代碼如下 復制代碼 echo "你好","朋友";
print –輸出一個字符串
Descrīption
int print ( string arg )//返回值為整形
代碼如下 復制代碼可以進行下面操作
代碼如下 復制代碼
$name=print "nihao n";
$str = 'test print value is'.$name;
eval("$print="$str";");
echo $print;
print_r — 打印關於變量的易於理解的信息。
bool print_r ( mixed expression [, bool return] ) //返回值是布爾型的,參數是mix類型的,可以是字符串,整形,數組,對象類print_r() 顯示關於一個變量的易於理解的信息。如果給出的是 string、integer 或 float,將打印變量值本身。如果給出的是 array,將會按照一定格式顯示鍵和元素。object 與數組類似。
print_r() 將把數組的指針移到最後邊。
你可以
print_r(str);
print_r(int);
print_r(array);
print_r(obj);
下面我們一個個舉例說明一下
四種方法可以輸出字符串。 echo
print()
printf()
print_r()
echo
可以一次輸出多個值,多個值之間用逗號分隔。echo是語言結構(language construct),而並不是真正的函數,因此不能作為表達式的一部分使用。
語法正確: echo "Hello", "World";
語法錯誤: echo ("Hello", "World");
print()
函數print()打印一個值(它的參數),如果字符串成功顯示則返回true,否則返回false。如,
if (!print("Hello, World")){
die("you are not listening to me");
}
printf()
printf()源於C語言中的printf()。該函數輸出格式化的字符串。
語法: printf(format,arg1,arg2,arg++)
format 規定字符串以及如何格式化其中的變量;
arg1, arg2, ++ 等參數將插入到主字符串中的百分號 (%) 符號處。該函數是逐步執行的。在第一個 % 符號中,插入 arg1,在第二個 % 符號處,插入 arg2,依此類推。
Example: ?php
$str = "Hello";
$number = 123;
printf("%s world. Day number %u",$str,$number);
?>
#Results======
Hello world. Day number 123
如果 % 符號多於 arg 參數,則您必須使用占位符。占位符被插入 % 符號之後,由數字和 "$" 組成。請參見例子 3。
Example: ?php
$number = 123;
printf("With 2 decimals: %1$.2fbr />With no decimals: %1$u",$number);
?>
#Result
With 2 decimals: 123.00
With no decimals: 123
print_r()和var_dump()
print_r()可以把字符串和數字簡單地打印出來,而數組則以括起來的鍵和值得列表形式顯示,並以Array開頭。如,
$a = array('name' => 'Fred', 'age' => '15', 'wife' => 'Wilma');
print_r($a);
Output: Array
{
[name] => Fred
[age] => 15
[wife] => Wilma
}
對象也一樣。如,
代碼如下 復制代碼class P {
var $name = 'nat';
// ...
}
$p = new P;
print_r($p);
Output: Object
{
[name] => nat
}
但print_r()輸出布爾值和NULL的結果沒有意義,因為都是打印"n"。因此用var_dump()函數更適合調試