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 ()?

¿Fue útil?

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);

http://www.php.net/sprintf

http://www.php.net/printf

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top