昨天我们看了echo和print语言结构,可以进行输出字符串。那么学过c语言都知道c语言中常用的输出函数printf,可以对字符串进行格式化输出,其实php也可以格式化输出。
【1】printf()函数
①作用:输出格式化字符串
语法: printf(format,arg1,arg2,arg++)
format:规定字符串以及如何格式化其中的变量。(常用的%s字符串 %f浮点数 %d整数 %u非负数 %b二进制)
变量:arg1、arg2、arg++ 参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。
返回值:返回被输出字符串的长度
$number = 521.90;
printf("字符串:%s",$number);// 字符串:521.9
echo '<br/>';
printf("浮点数:%f",$number);//浮点数:521.900000
echo '<br/>';
printf("浮点数:%.2f(保留两位小数)",$number);//浮点数:521.90(保留两位小数)
echo '<br/>';
printf("整数:%d",$number);//整数:521
echo '<br/>';
echo printf($number);//521.95
echo '<br/>';
②占位符
如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 "\$" 组成
$number = 180;
printf("有两位小数:%1\$.2f 没有小数:%1\$u",$number);//有两位小数:180.00 没有小数:180
③输出多个字符串
arg参数要一一对应
$name = 'Tacks';
$age = 18;
$weight = 88.88;
printf("I am %s,My age is %d,weight is %.2f .",$name,$age,$weight);
//I am Tacks,My age is 18,weight is 88.88 .
【2】sprintf()函数
①作用:格式化的字符串写入变量中
语法:sprintf(format,arg1,arg2,arg++)
返回值: 返回已格式化的字符串
$number = -9;
$str = sprintf("%f",$number);
echo $str;//-9.000000
echo '<br/>';
$number = -9;
$str = sprintf("整数:%1\$d 小数:%1\$.2f",$number);
echo $str;//整数:-9 小数:-9.00
②输出多个字符串结合占位符进行格式化
$name = 'Tacks';
$age = 18;
echo sprintf("I am %1\$s,I am %1\$s,age is %2\$d",$name,$age);
//I am Tacks,I am Tacks,age is 18
【3】vprintf() vsprintf() 函数
也是格式化字符串,不同于上面的函数,加了v前缀,它们的参数是在数组里。不是很常用,这里不过多介绍
$num1 = 123;
$num2 = 456;
vprintf("%d%d",array($num1,$num2));//123456
【4】小结
①printf是对字符串格式化后直接输出,sprintf是字符串格式化到变量里面。
②printf返回值是字符串的长度 ,sprintf返回格式化后的变量。
③这两个都是函数,函数一定要加()否则会报错Parse error: syntax error (T_CONSTANT_ENCAPSED_STRING)。
④在对字符串,或者数字格式敏感的时候,可能会用到。