1. 程式人生 > >echo、print、print_r、var_dump、printf、sprintf 和 vsprintf 的區別

echo、print、print_r、var_dump、printf、sprintf 和 vsprintf 的區別

1. echo     echo 是一個語言結構,可以輸出標量型別的資料,如int、float、string。沒有返回值。 2. print( )     print 是一個函式,可以輸出標量型別的資料,如int、float、string。有返回值,總是返回1。 3. print_r( )    print_r( ) 是一個函式,可以列印關於變數的易於理解的資訊,不僅可以列印標量型別的變數,還可以列印複合型別的變數,如array、object。有返回值,型別為bool。 4. var_dump( )     var_dump( ) 是一個函式可以列印關於變數的較為詳細的資訊,如變數值的型別。不僅可以列印標量型別的變數,還可以列印複合型別的變數,如array、object。返回值為NULL。
5. printf( )     printf( ) 輸出格式化的字串,有返回值,返回值是輸出的字串的長度。     如:printf('%s', 'abc');                // abc                   定義格式為按照字串形式直接輸出。 printf("%.0f",905.453);        // 905                    定義格式為按照浮點數形式輸出,保留小數點後0位小數。(會四捨五入)            printf("%.1f",905.453);        // 905.5                 定義格式為保留小數點後1位小數。
printf("%.2f",905.453);        // 905.45 printf("%f",905.453);           // 905.453000       輸出浮點數時,預設保留小數點後6位小數。 printf("%03d",4);                // 004                     定義格式為,按照十進位制形式輸出整數,整數位數為3,不足的部分用0填充。 6. sprintf()     sprintf() 返回格式化的字串。也就是說,這個函式僅僅是把格式化的字串返回,但不會輸出。     stringsprintf(string$format[,mixed $args
[,mixed $...]] )     引數$format和printf( )中的$format用法一致。下面進行詳細解說:     每一個格式化規範,都會包含一個百分號%,且以百分號開頭,以型別說明符結尾。中間可以有其他的修飾說明符。     引數$format中可以有多個格式化規範,從而對多個字串依次進行格式化。     注意:兩個百分號,表示百分號本身,相當於轉義了,也就是說兩個百分號就不再是格式化規範的起始符,僅僅表示一個字面上的百分符號。     每個格式化規範的組成元素,包含以下幾種:(按順序列出)     起始符:格式化規範的起始符,是一個百分符號%        必選     符號說明符:強制修飾格式化後的數值的正(+)或者負(-),預設負數格式化後前面用-修飾,正數不用修飾。        可選     填充說明符:格式化為指定的長度時,如果長度不足,用填充符前置填充到指定的長度,常用的填充符是0,預設的填充符是空格。        可選     對齊說明符:修飾格式化後的結果的對齊方式,預設是右對齊,字元a代表左對齊。        可選     長度說明符:指定轉換格式後的結果的最小字元數(最小長度)。        可選     精度說明符:指定保留小數點後小數的位數(超出的部分會四捨五入),形式為小數點後緊跟一個數字。        可選     型別說明符:格式化規範的結尾符,指定引數資料應當做什麼資料型別對待,也就是說按照何種型別格式轉化。        必選     常用的型別說明符,有以下幾種:     b: 代表二進位制整數,binary的首字母     d: 代表十進位制整數,decimal的首字母     e: 代表科學計數法     u: 代表無符號的十進位制整數,unsigned的首字母     f: 代表浮點數,float的首字母     o: 代表八進位制整數,octal的首字母     s: 代表字串,string的首字母     x: 代表十六進位制整數,小寫字母,hexadecimal     X:代表十六進位制整數,大寫字母,hexadecimal 舉例說明: list($year,$month,$day) = explode("-", "2015-9-28"); $result = sprintf("%04d-%02d-%02d", $year, $month, $day); var_dump($result);                                                                         // string(10) "2015-09-28" echo "<hr/>"; printf("%04d-%02d-%02d", $year, $month, $day);                      // 2015-09-28
7. vsprintf( )     vsprintf( ) 返回格式化的字串。和sprintf( )的區別是,vsprintf( )的第二個引數是陣列。     stringvsprintf(string$format,array$args)     引數$format的用法和上面一致,只不過vsprintf( )的第二個引數是陣列。vsprintf( )會對陣列中的每個元素,依次格式化轉換。     $result = vsprintf("%04d-%02d-%02d", explode("-", "2015-9-28"));     var_dump($result);             // string(10) "2015-09-28"