我想查詢我們的數據庫以獲取與用戶定義的查詢匹配的所有記錄,並將數據存儲在格式化數組中。問題是,我得到了所有的記錄,但並不確定如何正確處理數據。我已經爲此工作了幾天,並且在嘗試了各種想法之後並沒有做出太多的努力。希望這裏有人能夠分享一些見解。PHP:從數據圖上繪製數據點(Google Graphs)
下面的代碼執行查詢,並開始返回的數據處理成數組:
$msg_vol = array();
$xy_coords = array();
$tweet_count = 1;
$query = "SELECT created_at, tweet_id FROM `tweets` WHERE tweet_text LIKE '%{$safe_q}%' AND created_at < now() - 300";
$tweets = mysqli_query($db, $query);
confirm_query($tweets);
while ($tweet = mysqli_fetch_assoc($tweets)) {
$created_at = $tweet['created_at'];
$timestamp = strtotime($created_at);
$created_at_no_seconds = date('Y-m-d H:i', $timestamp);
if(!in_array($created_at_no_seconds, $xy_coords)) {
$created_at = $tweet['created_at'];
$timestamp = strtotime($created_at);
$created_at_no_seconds = date('Y-m-d H:i', $timestamp);
if(!in_array($created_at_no_seconds, $xy_coords)) {
$xy_coords = array(0 => $created_at_no_seconds, array('tweet_count' => $tweet_count, 'retweets' => 0));
} else {
// $created_at_no_seconds exists in array
// update array
$msg_vol[$created_at_no_seconds] = array('tweet_count' => $tweet_count++, 'retweets' => 0);
}
}
return $msg_vol;
我重新格式化$ created_at到分鐘的,暫時的,我只關心最後5分鐘(300秒)的數據,並希望每分鐘分離出它自己的關聯數組。 $ created_at_no_seconds變量可能包含要添加到數組中的重複條目。所以,我玩弄了in_array()來試着檢查它是否存在,如果不存在,只將它添加到數組中。我還沒有太多運氣。
一的print_r($ msg_vol)提供了以下輸出(它正在慢慢越來越接近所需的輸出):
[0] => Array
(
[created_at] => 2013-12-15 19:09
[tweet_count] => 1
[retweets] => 0
)
[2013-12-15 19:09] => Array
(
[tweet_count] => 11
[retweets] => 0
)
[1] => Array
(
[created_at] => 2013-12-15 19:09
[tweet_count] => 1
[retweets] => 0
...
[12] => Array
(
[created_at] => 2013-12-15 19:10
[0] => Array
(
[tweet_count] => 12
[retweets] => 0
)
)
[2013-12-15 19:10] => Array
(
[tweet_count] => 20
[retweets] => 0
)
[13] => Array
(
[created_at] => 2013-12-15 19:10
[0] => Array
(
[tweet_count] => 12
[retweets] => 0
)
)
...
(我沒有處理此刻的銳推,所以我乾脆將retweets數組作爲佔位符添加0)。
我想格式化它,以便在一個數組中,它包含tweet_count的值存儲在其中的唯一日期(下至分鐘)。上面以日期作爲關聯關鍵字的例子,以及$ k => $ v裏面是我試圖實現的。但是,當我繼續使用[0],[1]填充數組。 [12],[13]等。
我是否關閉?這已經是相當的兔子洞了......而且,它開始變成一個黑暗而孤獨的地方。 :(
我最終從array_push更改爲$ msg_vol [] = $ xy_coords,並得到相同的結果。所以,這很好,也更清楚一點。至於SELECT DISTINCT,我不確定我可以如何實現,因爲多行將具有相同的created_at日期,並且我仍然需要與查詢的其餘部分匹配的行。也許我誤解了... – DroBuddy
我也許會誤解。哪個領域需要獨特? –
我將代碼更新爲當前的樣子,並試圖進一步澄清它。 Y-m-d H:我應該是一個唯一的數組索引,其中$ k => $ v是數組屬性。所以,在上面的代碼中,數組元素[2013-12-15 19:09] =>數組是正確的,但其他人是多餘的,我不知道如何去掉它們。 – DroBuddy