2015-01-17 2 views
2

안녕하십니까,한도 각 출력에 대해

나는 상위 10 개 국가를 얻으려고 시도하지만 일부 국가는 출력에서 ​​제외하려고합니다. 다음 코드가 10 개의 결과를 필터링하고 있다는 것을 알기 때문에 국가 중 하나가 필터링됩니다. 결과는 예를 들어 상위 6에 불과합니다. 하지만 톱 10이 필요해. 누구나 4 개 국가를 고려하지 않고 For Each 진술을 10 개로 제한하는 방법을 말해 줄 수 있습니까?

대단히 감사합니다!

당신은 하나의 정수 변수 i = 0을 가지고 루프 경우 각 i++; 함께 증가하고 루프 깰 수

<table class="table" > 
    <thead> 
     <tr> 
      <th><?=l('Top 10 landen')?></th> 
      <th><?=l('Bezoek')?></th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php foreach(array_slice($countries, 0, 10) as $country => $cdata) 
     if($country != 'United States' && $country != 'Canada' && $country != 'China' && $country != 'Mexico') { 
     ?> 
     <tr> 
      <td><?=$country?></td> 
      <td><?=$cdata['views']?></td> 
     </tr>   
     <?php } ?> 
    </tbody> 
</table> 
+1

제외 값을 사용하여 mysql 쿼리에서 국가를 선택하십시오. –

+1

하나의 정수 변수 i = 0을 취하여 i ++로 증가시킬 수 있습니다. 각 if 루프와 break for 루프가 i = 9 일 때 .. – Sachin

+1

Thanks Sac, That worked! – Denny

답변

2

내가 PHP의 많은 지식을 가지고 있지 않지만 나는이 문제를 해결할 수 있다고 생각합니다 .. $countries 배열이 MySQL의 쿼리에서 얻을 수있다

<table class="table" > 
    <thead> 
     <tr> 
      <th><?=l('Top 10 landen')?></th> 
      <th><?=l('Bezoek')?></th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php $i = 0; 
foreach ($countries as $country => $cdata) { 
     if($country != 'United States' && $country != 'Canada' && $country != 'China' && $country != 'Mexico') { 
     ?> 
     <tr> 
      <td><?=$country?></td> 
      <td><?=$cdata['views']?></td> 
     </tr>   
     <?php 

      $i++; 
     } 
if($i > 10) break; } ?> 
    </tbody> 
</table> 
+1

'array_slice' 할 필요가 없다.'foreach'와'break'를 수행한다. –

+0

오, 미안 나는 array_slice가 왜 거기에 있었는지 모르겠다. PHP 녀석 ... 내 대답을 업데이트 할 수 있습니까? 감사합니다 ... – Sachin

+1

답변을 업데이트하십시오 - 이제 배열을 반복하고 값 10에 도달하면 '중단'합니다. –

1

경우 때 i > 10 .. 당신은 MySQL의 쿼리 내에서 필터링 할 수

SELECT id FROM `countries` WHERE id NOT IN("United States", "Canada", "China", "Mexico") LIMIT 10 

PHP에서 제외 된 국가의 구성 가능한 배열을 허용하도록 쿼리를 작성할 수 있습니다. 결과 배열을 슬라이스하고 필터링하지 않아도되므로 더 빠릅니다. 원 - 샷 쿼리로 원하는 것을 얻을 수 있습니다.