我有一个列表表,每个列表都有一个名为'top'的列。基本上,如果top不为null,我希望首先显示该列表,然后显示其他列表。
现在,我的代码是这样的:
foreach ($results as $result):
echo $result->name;
endforeach;
这将向我显示所有内容,但我希望首先显示“top”不为null的行。什么是最好的方法呢?
答案 0 :(得分:5)
您是否无法将ORDER BY
应用于提供$results
的查询?
答案 1 :(得分:0)
我同意Aaron ......最好的办法是订购它们,使它们在查询中排在第一位。
如果由于某种原因你不能这样做,你可以做其他一些事情:
在PHP中对对象或数组进行排序...可能必须使用自定义函数..如果是这种情况,请参阅:Sort Object in PHP
抓住只有NULL的行,打印它们,然后抓取那些非空的行。
您可以循环遍历数组两次。首先只打印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