<?php
$letters = range(A,Z);
$format_string = '<li><a href="#%s">%s</a></li>';
foreach ($letters as $key => $letter) {
echo printf($format_string,$letter, $letter);
}
?>
这是打印出来自A-W字母的li,但输出如下:
A
27
乙
27
等......直到最后一个号码。
使用带字符串连接的常规回显输出列表,没有任何27个。
答案 0 :(得分:1)
您正在使用echo
调用的返回值来调用printf
,该调用在the manual中定义为
返回输出字符串的长度。
所以您的printf
来电正在运行,并显示您的字符串。这将返回 27 ,这是一个字母插入其中后字符串<li><a href="#%s">%s</a></li>
的长度。然后,对echo
的调用显示在字符串本身显示之后。
简而言之,要么删除echo
,要么在评论中提到,请使用sprintf
代替字符串,而不是显示字符串。