リストテーブルがあり、各リストには「トップ」という列があります。基本的に、top が null でない場合、そのリストが最初に表示され、次に他のリストが表示されるようにします。
現在、私のコードは次のようになっています。
foreach ($results as $result):
echo $result->name;
endforeach;
これですべてが表示されますが、'top' が null でない行が最初に表示されるようにします。これについて最善の方法は何ですか?
ORDER BY
をフィードするクエリに を適用できません$results
か?
@Aaron Bertrandの回答の下のコメントに基づいて、SQLに次のような順序句が必要になります。
ORDER BY ISNULL(`top_ad`), the_rest_of_your_order_clause
私はアーロンに同意します...最善の方法は、それらがクエリの最初になるように並べることです。
何らかの理由でそれができない場合は、他のいくつかのことを行うことができます。
PHP でオブジェクトまたは配列を並べ替える...カスタム関数を使用する必要がある場合があります..その場合は、PHP でのオブジェクトの並べ替えを参照してください。
最初に NULL のみを持つ行を取得し、それらを出力してから、null でない行を取得します。
配列を 2 回ループできます。最初に NULL のみを印刷し、次に他のものを印刷します。
試す
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 }