为什么我得到:警告:printf()php中的参数太少

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了为什么我得到:警告:printf()php中的参数太少脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我收到了错误

Warning: PRintf() [function.printf]: Too few arguments

看看我看到的代码

function twentyten_posted_on() {
    printf( 
        sprintf( '<a href="%1$s" tITle="%2$s" rel="Bookmark"><span class="entry-date">%3$s</span></a>',get_PErmalink(),esc_attr( get_the_time() ),get_the_date()
        )
    );
}

什么似乎是问题?

解决方法

printf()和sprintf()函数是相同的;他们行为的唯一区别是一个一个语句(它做了一些事情)而另一个一个函数表达式(它评估的东西). (有关差异的说明,请参阅 this StackOverflow answer.)它们都将格式作为第一个参数,然后将零个或多个附加参数作为格式字符串中特殊字符的替换字符串.

你的sprintf()函数格式正确.您已经对格式字符串进行了编号,您将替换字符串作为参数来匹配格式字符串.一切都很好.

但请考虑printf()函数正在做什么.它得到一个字符串,恰好是sprintf()的输出.如果sprintf()包含%字符,那么printf()将需要一个替换字符串,该字符串不包含在您的代码中.

正如其他人所说,你可以从你的代码中省略sprintf().但你也应该明白为什么会这样.

例如:

$fmt = "%%d\n";
printf( $fmt );
printf( sprintf($fmt) );
printf( sprintf($fmt),"Hello world" );

一个printf工作,并打印“%d”.第二个printf失败,因为它的格式字符串暗示它应该有一个替换字符串,但没有提供.第三个打印零,因为当你尝试将“Hello world”评估为十进制整数(%d)时,这就是你得到的.

查看您的变量,您可能会发现其中至少有一个变量中包含%字符.

脚本宝典总结

以上是脚本宝典为你收集整理的为什么我得到:警告:printf()php中的参数太少全部内容,希望文章能够帮你解决为什么我得到:警告:printf()php中的参数太少所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。