0

リストテーブルがあり、各リストには「トップ」という列があります。基本的に、top が null でない場合、そのリストが最初に表示され、次に他のリストが表示されるようにします。

現在、私のコードは次のようになっています。

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

これですべてが表示されますが、'top' が null でない行が最初に表示されるようにします。これについて最善の方法は何ですか?

4

4 に答える 4

5

ORDER BYをフィードするクエリに を適用できません$resultsか?

于 2012-04-25T20:28:29.023 に答える
0

@Aaron Bertrandの回答の下のコメントに基づいて、SQLに次のような順序句が必要になります。

ORDER BY ISNULL(`top_ad`), the_rest_of_your_order_clause
于 2012-04-25T20:42:29.570 に答える
0

私はアーロンに同意します...最善の方法は、それらがクエリの最初になるように並べることです。

何らかの理由でそれができない場合は、他のいくつかのことを行うことができます。

  1. PHP でオブジェクトまたは配列を並べ替える...カスタム関数を使用する必要がある場合があります..その場合は、PHP でのオブジェクトの並べ替えを参照してください。

  2. 最初に NULL のみを持つ行を取得し、それらを出力してから、null でない行を取得します。

  3. 配列を 2 回ループできます。最初に NULL のみを印刷し、次に他のものを印刷します。

于 2012-04-25T20:33:08.053 に答える
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 }

于 2012-04-25T20:37:17.810 に答える