2009-06-20 11 views
17

nunca he utilizado estas funciones antes, pero después de leer mucho sobre sprintf(), decidí que debía conocerla.¿Por qué Sprintf() no genera nada?

Así que siguió adelante y hizo 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() en el 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()?

Respuesta

57

sprintf() devuelve una cadena, printf() lo muestra.

La siguiente dos son iguales:

printf(currentDateTime()); 
print sprintf(currentDateTime()); 
+24

lo recuerdo pensando '** ** silencio 'printf()'' :) – deed02392

+0

@ deed02392 , ¿No es eso 's' que representa" cadena "? – Pacerier

14

sprintf() imprime el resultado en una cadena. printf() lo imprime a decir, la salida estándar:

printf(currentDateTime()); 

es equivalente a:

echo sprintf(currentDateTime()); 
6

sprintf() devuelve una cadena mientras printf() da salida a una cadena. Por lo que 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); 

http://www.php.net/sprintf

http://www.php.net/printf

Cuestiones relacionadas