gpt4 book ai didi

php - 为什么我得到 : Warning: printf() Too few arguments in php

转载 作者:可可西里 更新时间:2023-11-01 13:18:10 36 4
gpt4 key购买 nike

我得到了错误

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) 时,这就是您得到的结果。

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

关于php - 为什么我得到 : Warning: printf() Too few arguments in php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11081947/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com