PHP sprintf的用法

实例一:这是正确的

<?php
$num = 5;
$location = 'tree';
$format = 'The %2$s contains %1$d monkeys';
echo sprintf($format, $num, $location)
?>

实例二:为什么这是错误的

<?php
$num = 5;
$location = 'tree';
$format = "The %2$s contains %1$d monkeys";
echo sprintf($format, $num, $location)
?>
阅读 2.9k
4 个回答

众所周知$符在php中是变量标识符,而php会解析双引号字符串中的"$"符号作为变量处理,而不会解析单引号字符串中的。
所以例2中字符串中的$s、$d,php当做变量来转换了,但是上文没有定义过$s、$d,于是报错。

lz可以试一下下面2个例子帮助理解:

$var = 'abc';
echo "echo $var";    // php把 $var 当做变量处理,结果输出: echo abc
$var = 'abc';
echo 'echo $var';     // 单引号的字符串php不进行变量解析,结果输出: echo $var
echo "echo \$var";    // 也可以使用双引号并且转义$符号让php不解析变量,结果也是输出: echo $var

例二中双引号中需要转义

$format = "The %2\$s contains %1\$d monkeys";

把$符转义即可

"The %2\$s contains %1\$d monkeys"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题