Я пытаюсь использовать одно и то же значение в разных местах при использовании sprintf, но не работает.
<?php $score = 50; $percent = 10; $str = "Hello: You scored %s (%s%%). Your score is %2$s %%"; //Problem is here %2$s echo sprintf($str,$score,$percent); ?>
Я получаю эту ошибку: Notice: Undefined variable: s in C:\web\apache\htdocs\sprintf.php on line 6 Warning: sprintf(): Too few arguments in C:\web\apache\htdocs\sprintf.php on line 8
Используйте одинарные кавычки вместо двойных кавычек:
$str = 'Hello: You scored %s (%s%%). Your score is %2$s %%';
Переменные расширяются внутри двойных кавычек, поэтому $s
рассматривается как переменная, а не опция форматирования.
Если вы хотите использовать двойные кавычки, вы можете избежать знака доллара:
$str = "Hello: You scored %s (%s%%). Your score is %2\$s %%";
Для переменной интерполяции используется $
внутри двойных кавычек, PHP ищет переменную $s
здесь. Используйте одинарные кавычки и укажите все свои аргументы, пока вы на нем:
'Hello: You scored %1$s (%1$s%%). Your score is %2$s %%'