2010-11-12 2 views
3

Когда я буду использовать printf вместо echo в PHP и почему? Я просто не понимаю, почему это важно понимать. Благодаря!Что такое printf, используемый в PHP?

+0

http://www.linuxquestions.org/questions/programming-9/php-printf-vs-echo-649387/ – sunn0

+0

PHP, мне кажется, накоплен крутой из многих языков, и существует несколько различных способов делай все. printf есть для программистов C, для редакторов оболочки есть эхо. что-то для всех. –

+0

Документация по API существует по определенной причине. – 2010-11-12 03:50:18

ответ

10

Он используется так же, как он используется в C, чтобы заменить форматированные значения на строку формата.

Существует буквально сотни примеров его использования на sprintf manual page.

Вы можете получить полезное форматирование переменных (нулевое заполнение, выравнивание, ширина и т. Д.), Что потребует echo, сопровождаемое несколькими вызовами функций.

Например, к правому краю и нулевой колодки строка до 10 символов, но укоротить, если длиннее 10 символов:

printf('[%010.10s]', $string); 

против

$tmp = ''; 

if (strlen($string) > 10) 
    $tmp = substr($string, 0, 10); 
else 
    $tmp = str_pad($x, 10, '0', STR_PAD_LEFT); 

echo $tmp; 

Вы можете легко формат номера в восьмеричные, шестнадцатеричные или двоичные, без беспорядка запускать их через функцию, сохраняя результат во временной переменной и передавая ее через echo. Существует множество функций для семейства printf.

+0

+1, вопреки вопросу OP, 'sprintf' - действительно бесценный инструмент во многих местах. – casablanca

+0

Это имеет смысл, почему я буду использовать его над эхом. Большое вам спасибо, я пытался в течение дня или около того, и мой друг перенаправил меня сюда! Спасибо! – BretHudson

4

Printf позволяет передавать параметры, так что вы можете сделать это:

printf("My name is %s and my favorite color is %s", $name, $color); 

или вы можете использовать эхо, который делает то же самое, но его не так чист:

echo "My name is $name and my favorite color is $color" 

Это просто который один Вы предпочитаете.

+1

Этот метод становится тем более важным для переводов со встроенными переменными: 'printf (__ ('Привет,% s, как вы?'), $ Username)', переведенная строка: 'こ ん に ち は% s, お 元 気 で すМожет? '. – deceze

+0

На работе мы используем это в сочетании с Zend_Translate все время. – Vic

2

printf() позволяет форматировать переменные определенным образом. Например, вы можете быть уверены, что что-то, что попадает в %d, всегда отображается в виде числа. Вы можете отображать числа с плавающей запятой с определенным количеством цифр после десятичной точки. Вы можете отображать числа в научных обозначениях. Вы можете преобразовать числа в восьмеричные/шестнадцатеричные.

Если вы хотите сделать что-либо из вышеперечисленного, используя эхо, вам нужно будет вызвать какую-либо функцию или другую, прежде чем помещать эти переменные в строку с двумя кавычками. Знание того, как использовать printf(), упрощает вашу работу.

И он становится еще более мощным, когда вы можете захватить выход, используя sprintf().

Смежные вопросы