¿Por qué sprintf () no muestra nada?
Pregunta
Nunca he usado estas funciones antes, pero después de leer mucho sobre sprintf (), decidí que debería conocerlas.
Así que seguí adelante e hice lo siguiente.
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());
No imprime nada. Usando la función printf () por otro lado:
printf(currentDateTime());
Imprime el resultado muy bien. Entonces, ¿cuál es la diferencia entre estas 2 funciones y cómo uso correctamente la función sprintf ()?
Solución
sprintf ()
devuelve una cadena, printf ()
la muestra.
Los dos siguientes son iguales:
printf(currentDateTime());
print sprintf(currentDateTime());
Otros consejos
sprintf ()
imprime el resultado en una cadena. printf ()
lo imprime en salida estándar, es decir:
printf(currentDateTime());
es equivalente a:
echo sprintf(currentDateTime());
sprintf () devuelve una cadena mientras que printf () genera una cadena. Entonces tendría que hacer algo como lo siguiente:
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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow