2009-06-20 51 views
17

Tôi chưa bao giờ sử dụng các chức năng này trước đây nhưng sau khi đọc rất nhiều về sprintf(), tôi quyết định tôi nên làm quen với nó.Tại sao không sprintf() đầu ra bất cứ điều gì?

Vì vậy, tôi đã tiếp tục và làm như sau.

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

Nó không in được gì. Sử dụng hàm printf() trên mặt khác:

printf(currentDateTime()); 

Nó in kết quả tốt. Vậy sự khác nhau giữa 2 hàm này là gì và làm cách nào để sử dụng đúng hàm sprintf()?

Trả lời

57

sprintf() trả về một chuỗi, printf() hiển thị nó.

sau Hai đều bình đẳng:

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

Tôi nhớ nó bằng cách suy nghĩ '** im lặng **' printf() '' :) – deed02392

+0

@ deed02392 , Không phải là 's' đại diện cho" chuỗi "? – Pacerier

14

sprintf() in kết quả thành chuỗi. printf() in nó tức là đầu ra tiêu chuẩn:

printf(currentDateTime()); 

tương đương với:

echo sprintf(currentDateTime()); 
6

sprintf() trả về một chuỗi trong khi printf() kết quả đầu ra một chuỗi. Vì vậy, bạn sẽ phải làm một cái gì đó như sau:

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

Các vấn đề liên quan