最近仕事で問題が発生しました:
複数フィールドの並べ替えには次の配列オブジェクトがあります (つまり、配列の要素は複数のフィールドを含むオブジェクトです)。配列オブジェクトの元のデータは次のとおりです。
順序付けルールは次のとおりです:
1 デフォルトでは、オブジェクトは createtime フィールドに従って昇順で並べ替えられます。
2 作成時間が等しい場合は、値フィールドに従って昇順に並べ替えます。
上記の並べ替えルールに従って、最終的な表示結果は次のようになります:
Data[2]-> Data[0]->Data[1]
次に、ビルドされた PHP を確認します。 -sort メソッドでは、単純な並べ替え (sort) は、特定のフィールドのキー値またはアルファベット順のみを満たすことができます。たとえば、上記の配列オブジェクト データを並べ替えた後の表示結果は次のようになります。
ここでは、単純な並べ替えのデフォルトがデータ配列の最初のフィールド パラコードのキー値に従って昇順になっていることがわかりますが、これは私が望むものではありません。
現時点では、必要な並べ替えには比較的複雑なロジックがあるため、カスタム並べ替えのみを検討できます。
PHP では、独自の並べ替えアルゴリズムを定義できます。独自の比較関数を作成し、それを usort() 関数に渡すことで、カスタム 並べ替えを作成できます。カスタム比較関数の場合、最初のパラメーターが 2 番目のパラメーターより小さい場合、比較関数は 0 より小さい数値を返す必要があり、それ以外の場合は 0 より大きい数値を返し、2 つのパラメーターが等しい場合は 0 を返す必要があります。カスタムソート形式は次のとおりです:
usort (ソートされる配列、'カスタムソート関数名');
たとえば、配列データ内の要素の長さをソートするには、次のように PHP プログラムを実行します。
元の質問に戻りますが、私のニーズによれば、カスタム PHP ソート関数は次のとおりです:
ソート後の結果は次のとおりです:
上の図でわかるように、 createtime は等しく、パラコードは昇順に配置されています。これはまさに私が必要とする結果であり、完了です。