لماذا لا 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 ()؟
المحلول
وsprintf()
بإرجاع سلسلة، printf()
يعرضها.
والاثنان التالية متساوون:
printf(currentDateTime());
print sprintf(currentDateTime());
نصائح أخرى
وsprintf()
يطبع نتيجة لسلسلة. طباعة printf()
أن أي الإخراج القياسي:
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);
لا تنتمي إلى StackOverflow