鍍金池/ 問(wèn)答/PHP/ PHP sprintf的用法

PHP sprintf的用法

實(shí)例一:這是正確的

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

實(shí)例二:為什么這是錯(cuò)誤的

<?php
$num = 5;
$location = 'tree';
$format = "The %2$s contains %1$d monkeys";
echo sprintf($format, $num, $location)
?>
回答
編輯回答
莫小染

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

http://www.w3school.com.cn/ph...

2017年3月8日 03:58
編輯回答
陌顏

眾所周知$符在php中是變量標(biāo)識(shí)符,而php會(huì)解析雙引號(hào)字符串中的"$"符號(hào)作為變量處理,而不會(huì)解析單引號(hào)字符串中的。
所以例2中字符串中的$s、$d,php當(dāng)做變量來(lái)轉(zhuǎn)換了,但是上文沒(méi)有定義過(guò)$s、$d,于是報(bào)錯(cuò)。

lz可以試一下下面2個(gè)例子幫助理解:

$var = 'abc';
echo "echo $var";    // php把 $var 當(dāng)做變量處理,結(jié)果輸出: echo abc
$var = 'abc';
echo 'echo $var';     // 單引號(hào)的字符串php不進(jìn)行變量解析,結(jié)果輸出: echo $var
echo "echo \$var";    // 也可以使用雙引號(hào)并且轉(zhuǎn)義$符號(hào)讓php不解析變量,結(jié)果也是輸出: echo $var
2017年7月11日 22:36
編輯回答
汐顏

例二中雙引號(hào)中需要轉(zhuǎn)義

$format = "The %2\$s contains %1\$d monkeys";
2017年7月16日 13:53
編輯回答
情已空

把$符轉(zhuǎn)義即可

"The %2\$s contains %1\$d monkeys"
2018年9月10日 06:47