php - printf和sprintf有不同的输出

w80xi6nr  于 2023-05-16  发布在  PHP
关注(0)|答案(2)|浏览(86)

我写了下面的php小程序来测试printfsprintf

<?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个数字?

7z5jn7bk

7z5jn7bk1#

printf不返回字符串,而是直接输出(只返回长度)。试试这个

<?php
    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个(在你的输出中)呢?因为printf返回打印字符串的长度,在您的情况下是6。
事情是这样的

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

ie3xauqp2#

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;

相关问题