2014-11-25 69 views
2

我寫了下面的小php程序來測試printfsprintfPHP - printf和sprintf的具有不同的輸出

<?php 
    $str_1 = printf("%x%x%x", 65, 127, 245); 
    $str_2 = sprintf("%x%x%x", 65, 127, 245); 

    echo $str_1 . "\n"; 
    echo $str_2 . "\n"; 

輸出是這樣的:

417ff56 
417ff5 

爲什麼我有6位在第一行輸出?

+1

您的'$ str_1'包含''6「' - 由'printf'返回的長度 – 2014-11-25 07:14:51

回答

4

printf does not return the string,it directly outputs it(and returns only its length)。試試這個

<?php 
    $text = "65 127 245"; 
    printf("%x%x%x", 65, 127, 245); 
    $str_2 = sprintf("%x%x%x", 65, 127, 245); 
    echo "\n". $str_2 . "\n"; 
?> 

輸出

417ff5 
417ff5 

Fiddle

現在你可能會問,爲什麼額外的6(在輸出)呢? Becuase printf返回打印字符串的長度,在你的情況下是6。

所以在這裏是怎麼一回事呢

417ff56   // that extra 6 comes from your first echo. 
417ff5 
0

的printf: - 直接打印格式的字符串。

sprintf: - 將給定的格式和存儲值轉換爲變量,您可以使用echo/print打印變量值。

$text = "65 127 245"; 
printf("%x%x%x", 65, 127, 245); 
$str_2 = sprintf("%x%x%x", 65, 127, 245); 
echo $str_2; 
相關問題