dongyi5570 2017-11-07 14:33
浏览 53
已采纳

为什么这个printf输出重复27?

<?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);
}

?>

This is meant to print out an li with the alphabet from A-W, however the output looks like this:

  • A

    27

  • B

    27

etc.. all the way up to the last number.

Using a regular echo with string concatenation outputs the list fine without any 27's.

  • 写回答

1条回答 默认 最新

  • duanmanmian7589 2017-11-07 14:37
    关注

    You're calling echo with the return value of the call to printf, which is defined in the manual as

    Returns the length of the outputted string.

    So your printf call is running, and displaying your string. This is returning 27, which is the length of the string <li><a href="#%s">%s</a></li> once a single letter has been inserted into it. The call to echo is then displaying that after the string itself has been shown.

    In short, either remove echo or as mentioned in a comment, use sprintf instead, which returns the string instead of displaying it.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?