限制对于每个输出AFTER if语句

时间:2015-01-17 10:56:05

标签: php

早上好,

我试图获得前十名的国家,但希望从输出中排除一些国家。我意识到以下代码正在过滤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>

2 个答案:

答案 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的可排除国家/地区的可配置数组。这样更快,因为避免切片和过滤生成的数组。通过一次性查询,您可以得到您想要的结果。