PHP sprintf()没有替换参数交换

Gue*_*ser 1 php

以下代码生成和未定义变量$ s而不是"number"

define("T1","one");
define("T2","two");

$test="number %2$s";

$test=sprintf($test, T1,T2);

echo $test;
Run Code Online (Sandbox Code Playgroud)

Joh*_*nde 7

单引号可以解决您的问题.双引号会导致PHP将'$'插入为变量.

<?php
define("T1","one");
define("T2","two");

$test='number %2$s';

$test=sprintf($test, T1,T2);

echo $test;
Run Code Online (Sandbox Code Playgroud)

看它工作