2014-10-10 37 views
0

我有一個包含多個行和列的數據庫,這些數據庫與PDO一起抓取。修改數組中指定鍵的每個值

$sql  = "SELECT timestamp FROM table"; 
$stmt = $dbh->prepare($sql); 
$results = $stmt->execute; 
$results = $stmt->fetchAll(PDO::FETCH_ASSOC); 

其中一個數據庫列是timestamp,它是一個10位數的unix時間戳。在將它發送到瀏覽器之前,我想將此服務器端轉換爲可讀格式。

這就是我希望它被格式化的方式,但我知道它需要在每一行上完成,這就是它讓我出行的地方。可能是一個foreach循環?

$results['timestamp'] = date('H:i\, l jS \of F Y', $results['timestamp']); 
+2

聽起來不錯possi吳春明。你試過了嗎? – 2014-10-10 13:59:31

+0

@JayBlanchard是的。如果我的查詢返回單行,它可能會起作用,但是因爲它需要遍歷每一行,所以需要多行。 – Joe 2014-10-10 14:40:20

回答

3

更加簡單做,在DB直接,因爲在數據完全相同的數據庫就已經被「循環」,因此您不必在客戶端代碼RELOOP:

SELECT DATE_FORMAT(timestamp, '%H:%i, etc...') FROM table 

格式碼記錄在這裏:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

+0

你是否需要'timestamp'的反引號? http://dev.mysql.com/doc/refman/5.5/en/datetime.html – andrew 2014-10-10 14:01:01

+1

[No](http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html) 。 – 2014-10-10 14:03:22

+0

好的。我以爲你需要逃避保留的話。 – andrew 2014-10-10 14:05:02

0

想通了:)

array_walk($results, function(&$value) { 
    $value['timestamp'] = date('H:i\, l jS \of F Y', $value['timestamp']); 
}