Почему 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());
он печатает результат просто отлично. Итак, в чем разница между этими 2 функциями и как правильно использовать функцию sprintf ()?
3 ответов
sprintf()
возвращает строку, printf()
отображает его.
следующие два равенства:
printf(currentDateTime());
print sprintf(currentDateTime());
sprintf()
выводит результат в строку. printf()
печатает его на стандартный вывод ie:
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);