在显示其他行之前,在foreach循环中显示具有特定非空列的db行

时间:2012-04-25 20:26:39

标签: php mysql database loops foreach

我有一个列表表,每个列表都有一个名为'top'的列。基本上,如果top不为null,我希望首先显示该列表,然后显示其他列表。

现在,我的代码是这样的:

foreach ($results as $result):
    echo $result->name;
endforeach;

这将向我显示所有内容,但我希望首先显示“top”不为null的行。什么是最好的方法呢?

4 个答案:

答案 0 :(得分:5)

您是否无法将ORDER BY应用于提供$results的查询?

答案 1 :(得分:0)

我同意Aaron ......最好的办法是订购它们,使它们在查询中排在第一位。

如果由于某种原因你不能这样做,你可以做其他一些事情:

  1. 在PHP中对对象或数组进行排序...可能必须使用自定义函数..如果是这种情况,请参阅:Sort Object in PHP

  2. 抓住只有NULL的行,打印它们,然后抓取那些非空的行。

  3. 您可以循环遍历数组两次。首先只打印NULL,然后再打印其他的。

答案 2 :(得分:0)

尝试

foreach ($result as $row){

然后按顺序指定所需的每个元素。

echo $row['top']

echo $row['your next data row']... 并让它们完全符合您的要求。

如果您需要格式化,请先尝试使用<pre>

您还可以添加if声明。

$data = $row['top'] if($top == 1) { then echo this } else {echo the values that are null }

答案 3 :(得分:0)

根据你在@Aaron Bertrand的答案下面的评论,你需要在sql中使用一个命令子句,如:

ORDER BY ISNULL(`top_ad`), the_rest_of_your_order_clause