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.

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

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料