
php字符串的格式化
<?php$num=123;$long=753159852;$float=0.45;$str="banana";printf("%%d=%d<br/>",$num);pr...
<?php
$num=123;
$long=753159852;
$float=0.45;
$str="banana";
printf("%%d=%d<br/>",$num);
printf("%%b=%b<br/>",$num);
printf("%%e=%e<br/>",$long);
printf("%%f=%f<br/>",$num);
printf("%%f=%01.2f<br/>",$num);
printf("%%f=%03.5f<br/>",$float);
printf("%%f=%08.4f<br/>",$float);
echo"<br/>";
printf("[$s]<br/>",$str);
printf("[$8s]<br/>",$str);
printf("[$-8s]<br/>",$str);
printf("[$08s]<br/>",$str);
printf("[$'8s]<br/>",$str);
?>
输出结果
%d=123
%b=1111011
%e=7.5360e+8
%f=123.000000
%f=123.00
%f=0.45000
%f=000.4500
[banana]
[ banana]
[banana ]
[00banana]
[$$banana]
问题
$long是长整型吗?
%e=7.53160e+8是什么能分析一下吗?
%%什么作用?
e是什么?
123.000000和123.00后边的0的个数是由什么决定的?
1.2、3.5、8.4前边为什么有0?这三个数字有什么意义?
8是从哪来的?
00banana和$$banana是什么?为什么有两个0和$?
%s是什么?s代表什么?
请一个问题一个问题地回答。
不挨个回答的不采纳 展开
$num=123;
$long=753159852;
$float=0.45;
$str="banana";
printf("%%d=%d<br/>",$num);
printf("%%b=%b<br/>",$num);
printf("%%e=%e<br/>",$long);
printf("%%f=%f<br/>",$num);
printf("%%f=%01.2f<br/>",$num);
printf("%%f=%03.5f<br/>",$float);
printf("%%f=%08.4f<br/>",$float);
echo"<br/>";
printf("[$s]<br/>",$str);
printf("[$8s]<br/>",$str);
printf("[$-8s]<br/>",$str);
printf("[$08s]<br/>",$str);
printf("[$'8s]<br/>",$str);
?>
输出结果
%d=123
%b=1111011
%e=7.5360e+8
%f=123.000000
%f=123.00
%f=0.45000
%f=000.4500
[banana]
[ banana]
[banana ]
[00banana]
[$$banana]
问题
$long是长整型吗?
%e=7.53160e+8是什么能分析一下吗?
%%什么作用?
e是什么?
123.000000和123.00后边的0的个数是由什么决定的?
1.2、3.5、8.4前边为什么有0?这三个数字有什么意义?
8是从哪来的?
00banana和$$banana是什么?为什么有两个0和$?
%s是什么?s代表什么?
请一个问题一个问题地回答。
不挨个回答的不采纳 展开
1个回答
推荐于2016-07-22
展开全部
根据经验,PHP里没有长整型,默认就是32位的INT,超出范围就是FLOAT。所以这里$long是INT32
7.53160e+8叫做科学计数法,自己查着学习一下,这是常识。表示7.53160乘以10的8次方。
%%作为printf的参数,就表示输出一个%,而如果直接一个%表达的是别的意思,例如%d表示按整数形式输出printf的下一个参数
e是英文字母。“%e”是一种printf的参数,表示用科学计数法输出printf的下一个参数。
“%和0和一个数和小数点和另一个数和f”是一种printf的参数,表示用浮点形式输出下一个参数。组合很多。如果全部带齐了,0表示用数字0来填补空白,小数点前的数表示一个显示几位数(多了不管少了拿上一句话里提到的0来填补),小数点后的数表示显示出来的数里小数点后有几位数(多了不管少了拿上一句话里提到的0来填补)这下回答了两个问题
8是凭空想出来的,你可以用别的数,答案不同而已。
最后几个完全是错的。错误1:$在PHP里的双引号里,会代表转义,也就是说,因为$在双引号里,所以参数在进入printf之前,参数里的$已经被处理没了(是的,双引号里的东西在PHP里会被预处理一下,可以把双引号理解为一个函数,而单引号就不会处理$号)。错误2:对于printf,%才是控制格式输出的符号,$号只会被原样输出。所以为了得到答案,程序末尾必须是这样的:
printf("[%s]<br/>",$str);
printf("[%8s]<br/>",$str);
printf("[%-8s]<br/>",$str);
printf("[%08s]<br/>",$str);
printf("[%'\$8s]<br/>",$str);
那么,两端的“【”和“】”表示这两个字符,原样显示。中间是“%s”带各种参数。第一个,不带别的参数,就显示出来。后面几个带8的,把后面的$str显示为至少8位。如果没有别的参数,就用空格补足,左边补右对齐。带负号的,右边补左对齐。带0或者空格表示用这两个字符补足,而其他补足字符必须用“'”符号当前缀。所以%'\$8s首先被双引号预处理使得\$变成$,所以printf收到的参数是%'$8s,然后printf分析到了%s以及参数'$和8就认为是在$str前面补足8位,用$这个字符来补。
总的来说,printf里,%表示控制输出格式。s就是一个英文字母,%s表示按照String的方式输出。如果用双引号把参数传给printf还要注意“$”和“\”被双引号转义。
7.53160e+8叫做科学计数法,自己查着学习一下,这是常识。表示7.53160乘以10的8次方。
%%作为printf的参数,就表示输出一个%,而如果直接一个%表达的是别的意思,例如%d表示按整数形式输出printf的下一个参数
e是英文字母。“%e”是一种printf的参数,表示用科学计数法输出printf的下一个参数。
“%和0和一个数和小数点和另一个数和f”是一种printf的参数,表示用浮点形式输出下一个参数。组合很多。如果全部带齐了,0表示用数字0来填补空白,小数点前的数表示一个显示几位数(多了不管少了拿上一句话里提到的0来填补),小数点后的数表示显示出来的数里小数点后有几位数(多了不管少了拿上一句话里提到的0来填补)这下回答了两个问题
8是凭空想出来的,你可以用别的数,答案不同而已。
最后几个完全是错的。错误1:$在PHP里的双引号里,会代表转义,也就是说,因为$在双引号里,所以参数在进入printf之前,参数里的$已经被处理没了(是的,双引号里的东西在PHP里会被预处理一下,可以把双引号理解为一个函数,而单引号就不会处理$号)。错误2:对于printf,%才是控制格式输出的符号,$号只会被原样输出。所以为了得到答案,程序末尾必须是这样的:
printf("[%s]<br/>",$str);
printf("[%8s]<br/>",$str);
printf("[%-8s]<br/>",$str);
printf("[%08s]<br/>",$str);
printf("[%'\$8s]<br/>",$str);
那么,两端的“【”和“】”表示这两个字符,原样显示。中间是“%s”带各种参数。第一个,不带别的参数,就显示出来。后面几个带8的,把后面的$str显示为至少8位。如果没有别的参数,就用空格补足,左边补右对齐。带负号的,右边补左对齐。带0或者空格表示用这两个字符补足,而其他补足字符必须用“'”符号当前缀。所以%'\$8s首先被双引号预处理使得\$变成$,所以printf收到的参数是%'$8s,然后printf分析到了%s以及参数'$和8就认为是在$str前面补足8位,用$这个字符来补。
总的来说,printf里,%表示控制输出格式。s就是一个英文字母,%s表示按照String的方式输出。如果用双引号把参数传给printf还要注意“$”和“\”被双引号转义。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询