Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在显示其他行之前,先在foreach循环中显示具有特定NOTNULL列的db行_Php_Mysql_Database_Loops_Foreach - Fatal编程技术网

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

Php 在显示其他行之前,先在foreach循环中显示具有特定NOTNULL列的db行,php,mysql,database,loops,foreach,Php,Mysql,Database,Loops,Foreach,我有一个列表表,每个列表都有一个名为“top”的列。基本上,如果top不为null,我希望首先显示该列表,然后显示其他列表 现在,我的代码是这样的: foreach ($results as $result): echo $result->name; endforeach; 这将显示所有内容,但我希望“top”不为null的行首先显示。最好的方法是什么?你不能对提供$results的查询应用排序依据吗?你不能对提供$results的查询应用排序依据吗?我同意Aaron的观点。。。

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

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

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

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

你不能对提供
$results
的查询应用
排序依据吗?

你不能对提供
$results
的查询应用
排序依据吗?

我同意Aaron的观点。。。最好的做法是对它们进行排序,以便它们在查询中处于第一位

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

  • 在PHP中对对象或数组排序。。。可能必须使用自定义函数。。如果是这种情况,请参见:

  • 首先抓取只有NULL的行,打印它们,然后抓取不为NULL的行

  • 可以在数组中循环两次。首先只打印空值,然后再次打印其他值


  • 我同意亚伦的观点。。。最好的做法是对它们进行排序,以便它们在查询中处于第一位

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

  • 在PHP中对对象或数组排序。。。可能必须使用自定义函数。。如果是这种情况,请参见:

  • 首先抓取只有NULL的行,打印它们,然后抓取不为NULL的行

  • 可以在数组中循环两次。首先只打印空值,然后再次打印其他值

  • 试一试

    foreach($result as$row){

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

    echo$row['top']

    echo$row[“您的下一个数据行”]…
    让他们的空间完全符合你的要求

    如果需要格式化,请先尝试使用

    ORDER BY ISNULL(`top_ad`), the_rest_of_your_order_clause
    
    您还可以添加
    if
    语句

    $data=$row['top']
    如果($top==1){则回显此值}否则{回显空值}

    尝试

    foreach($result as$row){

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

    echo$row['top']

    echo$row[“您的下一个数据行”]…
    让他们的空间完全符合你的要求

    如果需要格式化,请先尝试使用

    ORDER BY ISNULL(`top_ad`), the_rest_of_your_order_clause
    
    您还可以添加
    if
    语句

    $data=$row['top']
    
    如果($top==1){则回显此值}否则{回显空值}

    根据您在@Aaron Bertrand的回答下面的评论,您需要在sql中使用order子句,如:


    根据@Aaron Bertrand下面的回答,您需要在sql语句中使用order子句,如:


    你的
    $results
    是一个查询结果吗?如果是,你能请它吗?你的
    $results
    是一个查询结果吗?如果是,你能请它吗?@Aaron Bertrand SQL Server?只有一个mysql标记,我提到的注释不见了。它提到SQL Server了吗?哦,对不起。我不确定我在第一页中是如何回答这个问题的蕾丝。@Aaron Bertrand SQL Server?只有一个mysql标记,我提到的注释不见了。它提到SQL Server了吗?哦,对不起。我不知道我一开始是怎么回答这个问题的。