Почему sprintf () ничего не выводит?
Вопрос
Я никогда раньше не использовал эти функции, но после прочтения большого количества информации о sprintf () я решил, что мне следует узнать об этом.
Поэтому я пошел дальше и сделал следующее.
function currentDateTime() {
list($micro, $Unixtime) = explode(" ",microtime());
$sec= $micro + date("s", $Unixtime);
$sec = mb_ereg_replace(sprintf('%d', $sec), "", ($micro + date("s", $Unixtime)));
return date("Y-m-d H:i:s", $Unixtime).$sec;
}
sprintf(currentDateTime());
Он ничего не печатает. Использование функции printf () с другой стороны:
printf(currentDateTime());
Он печатает результат просто отлично. Так в чем же разница между этими двумя функциями и как правильно использовать функцию sprintf ()?
Решение
sprintf ()
возвращает строку, printf ()
отображает ее.
Следующие два равны:
printf(currentDateTime());
print sprintf(currentDateTime());
Другие советы
sprintf ()
печатает результат в строку. printf ()
выводит его на стандартный вывод, т.е.
printf(currentDateTime());
эквивалентно:
echo sprintf(currentDateTime());
sprintf () возвращает строку, а printf () выводит строку. Поэтому вам нужно сделать что-то вроде следующего:
function currentDateTime() {
list($micro, $Unixtime) = explode(" ",microtime());
$sec= $micro + date("s", $Unixtime);
$sec = mb_ereg_replace(sprintf('%d', $sec), "", ($micro + date("s", $Unixtime)));
return date("Y-m-d H:i:s", $Unixtime).$sec;
}
$output = sprintf(currentDateTime());
printf($output);