2012-06-18 43 views
1

有誰知道爲什麼當我執行此:爲什麼echo與printf結合顯示錯誤的輸出?

#!/usr/bin/php 
<?php 

$eff_theo = array_fill(0, 10, 100); 

for ($i = 0; $i < 10; ++$i) 
    echo printf("%5d", $eff_theo[$i]).' '; 
echo PHP_EOL; 
?> 

我得到這個:

1005 1005 1005 1005 1005 1005 ... 
+2

不要'echo printf',只是'printf'。 –

+0

你期待什麼輸出?回聲只是我可以看到的空間。格式說明符中的5是什麼? –

回答

2

你混合echoprintf

printf返回格式化字符串的長度,因此您的echo調用打印出'5'。

嘗試取出echo後再次嘗試....

+0

printf返回格式化字符串的長度,而不是值;它輸出值 –

+0

這是當我沒有足夠的咖啡時嘗試回答問題時發生的情況。我會發現 - 謝謝你! – andrewsi

1

的printf返回您所做的字符串的長度,選擇使用

echo sprintf(...) 

或只是

printf(...) 

與無回聲

1

printf是一個函數,輸出將給定的文本轉換爲標準輸出並返回輸出字符串的長度。

echo是一種用於輸出數據的語言結構。最終,您在printf輸出其值後回顯printf聲明的返回值。

可以使用echoprintf,但不能同時使用。