2017-09-14 22 views
-2

我有PHP代码:为什么PHP回声的printf增加了意想不到的符号

$searchTitlePersonType = ($isTravelAgency == true ? "tourists" : "persons"); 
var_dump($searchTitlePersonType); // Right behavior 

同时,当我尝试实施它在我的模板:

<?php 
    echo printf($this->translate("Поиск %s"), $searchTitlePersonType); 
?> 

我采取不同的意外数字在字符串的末尾:“游客33”或“个人27”。它不依赖于字符串的编码页面,并且有很多人找到解决方法 - 不要将echo printf合并到一行代码中,但是这里是关于这个问题的问题:为什么会发生这种情况?

链接:

php printf adds number to output

PHP printf adds something after formatted string

+2

在第一个链接中引用已接受的答案:“难道不是因为你在回应printf吗?” – JJJ

+1

^我会说同样的。 'printf()'返回一个整数(字符串的长度)。当你回显它时,它会打印该整数。 http://php.net/manual/en/function.printf.php换句话说:你应该使用* echo *或'printf()',但不能同时使用! – Qirel

+1

“printf”命令不需要“回显”,因为它输出数据本身。使用echo输出输出字符串长度的“printf”命令的结果。您必须删除'echo'或使用'sprintf'而不是'printf' – Stalinko

回答

4

您在这里混淆了一些东西。 echo printf作为构造没有意义,因为printf已经打印。

你所看到的是,printf完成它的工作,然后echo打印printf的结果,这是打印字符串的长度。

因此,您可以使用sprintf,它会返回格式化的字符串而不是打印它,或者您可以跳过程序的echo部分。

相关问题