ホームページ >バックエンド開発 >PHPチュートリアル >PHPで指定した列で多次元配列をソートするにはどうすればよいですか?

PHPで指定した列で多次元配列をソートするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-29 22:39:33406ブラウズ

How to Sort a Multidimensional Array by a Specified Column in PHP?

PHP での指定した列による多次元配列の並べ替え

PHP で特定の列による多次元配列を並べ替えるには、組み込み関数を使用します。 PHP 関数 usort または uasort 内。並べ替えの鍵は、配列要素の順序を決定するカスタム比較関数を提供することです。

並べ替え用のカスタム比較関数

カスタム比較関数は 2 つの要素を受け取ります入力として配列を取得し、整数を返します:

  • 最初の要素が「大きい」とみなされる場合は正の整数
  • 最初の要素が 2 番目の要素より「小さい」とみなされる場合は負の整数。
  • 要素が等しいとみなされる場合はゼロ。

単一列による並べ替え

という多次元配列があるとします。 $data ここで、各要素は複数の列を持つレコードを表します。 'name' 列で配列を並べ替えるには、次のコードを使用します。

usort($data, function($a, $b) {
  return strcmp($a['name'], $b['name']);
});

このカスタム比較関数は、strcmp 関数を使用して、次の値を比較します。各要素の 'name' 列。並べ替えられた配列には、'name' 列に基づいてアルファベット順に並べられた要素が含まれます。

複数の列による並べ替え

複数の列で並べ替えるには、追加のパラメーターをカスタム比較関数に渡します。たとえば、'number'、次に 'name' で並べ替える場合:

usort($data, function($a, $b) {
  if ($a['number'] == $b['number']) {
    return strcmp($a['name'], $b['name']);
  }
  return $a['number'] - $b['number'];
});

高度な機能

次の詳細を指定することもできます機能:

  • 逆ソート: 並べ替え順序を逆にするには、比較関数の 2 番目のパラメーターを SORT_DESC に設定します。
  • カスタム投影: 列の値が直接比較できない場合は、変換する 3 番目のパラメーターとして投影関数を指定します。

以上がPHPで指定した列で多次元配列をソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。