Я отвечу ужасным, нарисованным рукой комиком. Второе изображение является причиной того, что result
является undefined
в вашем примере кода.
Если вы ищете различия в любых поисковых системах, вы получите ответ. Например, ниже используется одно использование для printf:
Вы можете использовать эту функцию для форматирования десятичных знаков в числе:
$num = 2.12;
printf("%.1f",$num);
prints:
2.1
И, конечно, это только одно использование. Еще один хороший образец, который я использую, приведен ниже:
Если вы печатаете данные в теге «pre», курьерском шрифте или шрифте без переменной длины (например, терминале), вы можете имеют возможность использования функции printf.
$value1 = "31298";
$value2 = "98";
print "<pre>\n";
printf ("%'.-15.15s%'.6.6s\n", $heading1, $value1);
printf ("%'.-15.15s%'.6.6s\n", $heading2, $value2);
print "</pre>\n";
?>
И много другого использования.
Основное отличие заключается в том, что printf сначала получает строку формата, с заполнителями (эти знаки% вы видите), и даже может принимать некоторые параметры форматирования (например,% 2d, которые показывают 2 цифры для числа).
Вместо этого Echo отображает только строку. Когда вы делаете «$ i bar», строка сначала расширяется со значением $ i, а затем отправляется на отображаемую эхо-функцию.