2012-03-20 16 views
0

私のソートでは、行1と行2を比較し、条件をチェックしてください。最初の行がそれぞれ前に現れるか、比較された場所に残るか、2番目の行の後に現れなければならない場合は、0より小さい整数、等しい、またはより大きい値を返します。他のすべてよりも、カラー2より他のオブジェクトを参照して値1、0 -1でオブジェクトをソート

まず色1、:

アイブ氏は、2つの変数、私はのようなものをソートしたい色1、色2 を得ました。

これを行うにはどのような条件が必要ですか? Iveはそれを試しましたが、動作しません。 $ ROW1 - 最初の要素 $行2 - 2番目の要素

if(COLOR 1 == $row1->name) 
    return -1; 
if(COLOR 2 == $row1->name && $row2->name != COLOR 2) 
    return 0; 
else if(COLOR 2 == $row2->name && $row2->name == COLOR 1) 
    return -1; 
else return 1; 

任意のアイデア?

+2

'row'はデータベースを初期化します。データベースを使用している場合は、PHPでデータを並べ替える正当な理由はありません。 – symcbean

+0

関数に含まれるこのコードは 'usort()'に渡されますか? –

+0

はい、私は知っていますが、PHPビューモジュールの私のdrupal関数は、変数を返すことで物事をソートする必要があります。 –

答えて

1

どのように色が他の色よりも大きいか小さいかを決定したいですか?
PHPの関数usort()が必要とするように、ソートにコールバック関数を使用すると、関数は$ color1と$ color2が等しい場合は0、$ color1が$ color2より小さい場合は-1、$ color1より小さい場合は-1を返します。 $ color2より大きい

function cmp ($color1, $color2){ 
    if($color1 < $color2){ /* or some other test for inequality */ 
    return -1; 
    }else if($color1 > $color2){ /* again, it is up to you to define the "values" of colors */ 
    return 1; 
    }else{ /* the colors are equal */ 
    return 0; 
    } 
} 
+0

私はそれを次のようにしたいと思っています: 私の行 - >色==色1ならば最初に色1を比較するので最初でなければなりません。 if row - > color == COLOR 2それはすべての色1のものの後になければならない そしてすべての残りの –

関連する問題