2013-07-05 2 views
0

basic arrays을 이해하지만 좀 더 고급 스러울 때 조금 잃어 버립니다. 누군가 다음 코드와 array으로 나를 도울 수 있습니까?월을 찾을 수없는 경우에도 12 개월 동안 12 개월 동안 12 개의 키를 모두 포함하도록 배열이 필요합니다.

DB queryarray에 저장하고 있습니다. 모든 12 개월이 DB에 없다면 모든 것이 저장됩니다 (필요한대로). 그러나, 내 문제는이 모든 12 keys 가지고 내가 array 필요가 그래서 내가 이것을 인쇄 할 수 있습니다. 존재하지 않는 경우

// Example amounts 

0, 0, 0, 0, 5.23, 0, 0, 158.35, 0, 0, 0, 0 

기본적으로 나는 아직도 그 달에 대해 0을 출력 할 수 있어야한다.

$closedsales = mysqli_query($mysqli, "SELECT MONTH(date) as month, sum(amount) as total FROM sales WHERE user_id = '".$userid."' AND status = 'S' GROUP BY MONTH(date)"); 

    while ($row = mysqli_fetch_assoc($closedsales)) { 
    $monthlysales[$row['month']] = $row['total']; 
    } 

     foreach($monthlysales as $key => $amount) { 
     echo "$amount <br />"; 
     } 

답변

2

는 결과 배열을 미리 기입. 행이 테이블에서 누락 된 경우, 초기 값은 0입니다.

+0

^정확한 케이스에 대한 더 쉬운 해결책은 여기에. – CodeAngry

+0

매우 감사합니다. 나는 그 기능을 기억할 것이다 !! 항상 도움을 주셔서 다시 한번 감사드립니다 !! – Chris78

1
$allmonthlysales = array_fill_keys(range(1, 12), 0); 
foreach($monthlysales as $month => $sales){ 
    $allmonthlysales[$month] = $sales; 
} 
var_dump($allmonthlysales); 
  • 준비하고 키 1-12없이 판매와 0value 같은 의미 개월 array :

    여기 내 코드입니다.

  • array을 위에 빌드 된 빈 것으로 판매 한 달과 병합하십시오.
    $monthlysales = array_fill_keys(range(1, 12), 0); 
    

    그런 다음 테이블에서 행 요소를 대체 할 루프를 실행 :
  • 그리고 당신은 당신이 필요로하는 것을 가지고 ...
+1

배열에 숫자 키가있는 경우 'array_merge'는 이들을 연결하며 유사한 키를 병합하지 않습니다. – Barmar

+0

@Barmar ** TRUE! ** 그게 내 절름발이 야. – CodeAngry

관련 문제