ホームページ > バックエンド開発 > PHPチュートリアル > PHP配列オブジェクトのカスタムソート

PHP配列オブジェクトのカスタムソート

WBOY
リリース: 2016-06-23 13:35:49
オリジナル
1424 人が閲覧しました

最近仕事で問題が発生しました:

複数フィールドの並べ替えには次の配列オブジェクトがあります (つまり、配列の要素は複数のフィールドを含むオブジェクトです)。配列オブジェクトの元のデータは次のとおりです。

順序付けルールは次のとおりです:

1 デフォルトでは、オブジェクトは createtime フィールドに従って昇順で並べ替えられます。

2 作成時間が等しい場合は、値フィールドに従って昇順に並べ替えます。

上記の並べ替えルールに従って、最終的な表示結果は次のようになります:

Data[2]-> Data[0]->Data[1]

次に、ビルドされた PHP を確認します。 -sort メソッドでは、単純な並べ替え (sort) は、特定のフィールドのキー値またはアルファベット順のみを満たすことができます。たとえば、上記の配列オブジェクト データを並べ替えた後の表示結果は次のようになります。

ここでは、単純な並べ替えのデフォルトがデータ配列の最初のフィールド パラコードのキー値に従って昇順になっていることがわかりますが、これは私が望むものではありません。

現時点では、必要な並べ替えには比較的複雑なロジックがあるため、カスタム並べ替えのみを検討できます。


PHP では、独自の並べ替えアルゴリズムを定義できます。独自の比較関数を作成し、それを usort() 関数に渡すことで、カスタム 並べ替えを作成できます。カスタム比較関数の場合、最初のパラメーターが 2 番目のパラメーターより小さい場合、比較関数は 0 より小さい数値を返す必要があり、それ以外の場合は 0 より大きい数値を返し、2 つのパラメーターが等しい場合は 0 を返す必要があります。カスタムソート形式は次のとおりです:

usort (ソートされる配列、'カスタムソート関数名');

たとえば、配列データ内の要素の長さをソートするには、次のように PHP プログラムを実行します。

元の質問に戻りますが、私のニーズによれば、カスタム PHP ソート関数は次のとおりです:

ソート後の結果は次のとおりです:

上の図でわかるように、 createtime は等しく、パラコードは昇順に配置されています。これはまさに私が必要とする結果であり、完了です。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート