早上好,
我试图获得前十名的国家,但希望从输出中排除一些国家。我意识到以下代码正在过滤10个结果,因此当其中一个国家/地区进行过滤时。例如,结果只有前六名。但我需要前10名。任何人都可以告诉我如何将For Each语句限制为10而不考虑4个国家吗?
非常感谢!
<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>
答案 0 :(得分:2)
我不太了解php,但我认为这可以解决你的问题..
你可以取一个整数变量i = 0
并在每个if循环中用i++;
递增它,并在i > 10
时断开循环..
<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 :(得分:1)
如果从MySQL查询中获取$countries
数组,则可以在MySQL查询中对其进行过滤:
SELECT id FROM `countries` WHERE id NOT IN("United States", "Canada", "China", "Mexico") LIMIT 10
显然,您可以构建查询以接受来自PHP的可排除国家/地区的可配置数组。这样更快,因为避免切片和过滤生成的数组。通过一次性查询,您可以得到您想要的结果。