Por que o sprintf () não produz nada?
Pergunta
Eu nunca usei essas funções antes, mas depois de ler muito sobre sprintf (), decidi que deveria conhecê -lo.
Então fui em frente e fiz o seguinte.
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());
Ele não imprime nada. Usando a função printf (), por outro lado:
printf(currentDateTime());
Ele imprime o resultado muito bem. Então, qual é a diferença entre essas duas funções e como uso corretamente a função sprintf ()?
Solução
sprintf()
Retorna uma string, printf()
exibe isso.
Os dois seguintes são iguais:
printf(currentDateTime());
print sprintf(currentDateTime());
Outras dicas
sprintf()
Imprime o resultado para uma string. printf()
Imprime -o para saída padrão, ou seja:
printf(currentDateTime());
é equivalente a:
echo sprintf(currentDateTime());
sprintf () retorna uma string enquanto printf () produz uma string. Então você teria que fazer algo como o seguinte:
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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow