2013-05-25 35 views
0

我有一個返回數據庫結果像這樣的功能:分類的MySQL結果陣列

<?php print_r($homepagematches; ?> 
Array 
(
[0] => Array 
    (
     [matchid] => 30 
     [matchtitle] => Testing This! 
     [matchaverage] => 1 
     [matchyoutubecode] => New Match 
     [casterid] => 1 
     [matchtype] => 
     [matchdate] => 2013-05-24 02:19:49 
     [matchcasteryoutube] => http://youtube.com/huskystarcraft 
     [matchcaster] => HuskyStarcraft 
    ) 

[1] => Array 
    (
     [matchid] => 27 
     [matchtitle] => Psy vs Camara 
     [matchaverage] => 1 
     [matchyoutubecode] => nefC9vkMfG8 
     [casterid] => 1 
     [matchtype] => 
     [matchdate] => 2013-05-24 02:13:10 
     [matchcasteryoutube] => http://youtube.com/huskystarcraft 
     [matchcaster] => HuskyStarcraft 
    ) 

該函數返回內最近3天內的所有比賽中,我試圖找出是如何數組改革,我可以在發佈日期之前顯示比賽。我知道一個foreach循環可能需要這個,我只是無法理解我需要實現的概念。

$matchdate = ''; 
foreach($this->data['homepagematches'] as $match){ 
    if($matchdate != date('m/d', strtotime($match['matchdate'])) || $matchdate == ''){ 
    $homematch[date('m/d', strtotime($match['matchdate']))] = array(
    "matchtitle" => $match['matchtitle']); 
    } 

基本上我需要的陣列看起來像:

Array 
(
[05/24] => Array 
     (
       [matchid] =>30 
       [matchtitle] => Testing This! 
       [matchyoutubecode] => New Match 
       [casterid] = 1 
     ) 
) 
+0

或者您可以查詢'matchdate'字段並僅提取正確的結果。這種方式對MySQL的壓力較小(不會返回太多結果),也不需要編寫php代碼來完成mysql應該完成的任務。 – Twisted1919

+0

我收到了正確的結果。查詢只返回確實會顯示的行。你是說,而不是一個查詢在過去3天內拉動所有匹配,我需要有三個不同的查詢,每個查詢都在某一天,即今天,昨天......。這似乎是服務器處理的更多負載。謝謝你快速的回覆! :) –

回答

0

我想這應該這樣做。

foreach($this->data['homepagematches'] as $match){ 
    $tag = date('m/d', strtotime($match['matchdate'])); 
    $data[$tag][] = array(
     "matchid" => $match['matchid'], 
     "matchtitle" => $match['matchtitle'], 
     "matchyoutubecode" => $match['matchyoutubecode'], 
     "casterid" => $match['casterid'] 
    ); 
} 
print_r($data); 
+0

非常感謝Andy。正是我需要的。你是老闆! –

0
<?php 
$MatchesByDate = array(); 
foreach($homepagematches as $match) { 
    list($matchdate,$time) = explode(" ",$match["matchdate"]); //split field into date and time 
    if(!isset($MatchesByDate[$matchdate])) 
     $MatchesByDate[$matchdate] = array(); // If the array for that date doesnt exist yet make it 
    $MatchesByDate[$matchdate][] = $match; //Use the matchdate as a key and add to the array 
}