我无法理解以下代码:
<?php
$number = 123;
vprintf("With 2 decimals: %1\$.2f
<br>With no decimals: %1\$u",array($number));
?>
浏览器输出:
With 2 decimals: 123.00
With no decimals: 123
但是这里只有一个元素在数组中,而它必须是两个参数。
%1\$
答案 0 :(得分:8)
这是指定要使用哪个参数的方法。 %1$s
表示第一个参数,%2$s
表示第二个参数等。它是重新使用单个参数的一种方式,因此您不必多次提供相同的值。函数调用:
$one = 'one';
$two = 'two';
printf('%s', $one); // 'one'
printf('%1$s', $one); // 'one'
printf('%s %s', $one, $two); // 'one two'
printf('%1$s %2$s', $one, $two); // 'one two'
printf('%2$s %1$s', $one, $two); // 'two one'
printf('%1$s %2$s %1$s', $one, $two); // 'one two one'
在您的代码中,它使用\
进行了转义,因为您的格式是双引号,这会尝试解析变量$.2f
或$u
(其中&#如果美元符号没有被转义,则存在)。