$format_str = vsprintf($str, $values);

vsprintf 输出格式化的字符串,$str 中会填充 %d%s 等占位符。当后面的数据部分少于占位符个数时,就会报这个错误。

可以将 $str 和 $values 输出出来,对比就能找到错误原因。也可以在函数前面加一个 @ 来忽略这个报错。