2017-09-14 119 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部分。

相關問題