关闭

echo、print、print_r、var_dump、printf、sprintf 和 vsprintf 的区别

标签: echoprintprint_rvar_dumpprintf
503人阅读 评论(0) 收藏 举报
分类:
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() 返回格式化的字符串。也就是说,这个函数仅仅是把格式化的字符串返回,但不会输出。

    string sprintf ( 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( )的第二个参数是数组。

    string vsprintf ( string $format , array $args )
    参数$format的用法和上面一致,只不过vsprintf( )的第二个参数是数组。vsprintf( )会对数组中的每个元素,依次格式化转换。

    $result = vsprintf("%04d-%02d-%02d", explode("-", "2015-9-28"));
    var_dump($result);             // string(10) "2015-09-28"


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:139767次
    • 积分:3515
    • 等级:
    • 排名:第9401名
    • 原创:211篇
    • 转载:0篇
    • 译文:0篇
    • 评论:24条
    博客专栏
    最新评论