2013-05-25 2 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 루프가이 작업을 위해 필요하다는 것을 알았습니다. 구현할 필요가있는 개념을 머리로 생각할 수 없습니다.

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

"matchdate"필드를 쿼리하고 올바른 결과 만 추출 할 수 있습니다. 그렇게하면 mysql에 대한 부담이 줄어들고 (너무 많은 결과를 반환하지 않음) 또한 mysql이 처음 수행 한 작업을 수행하기 위해 PHP 코드를 작성할 필요가 없습니다. – Twisted1919

+0

올바른 결과를 얻고 있습니다. 쿼리는 실제로 표시 될 행만 반환합니다. 당신은 지난 3 일 안에 모든 성냥을 끌어 당기는 하나의 질의 대신에, 나는 어제 오늘, 즉 오늘 당장 끌어 당기는 3 가지 다른 질의를 가져야한다고 말하고 있습니까? 이것은 서버가 처리 할로드가 많은 것처럼 보입니다. 빠른 응답 주셔서 감사합니다! :) –

답변

0

난이 그것을해야한다고 생각 :

$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']); 
    } 

는 기본적으로 나는처럼 보이도록 배열이 필요합니다.

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 
}