ホームページ >バックエンド開発 >PHPの問題 >PHPで2次元配列をソートする方法

PHPで2次元配列をソートする方法

PHPz
PHPzオリジナル
2023-04-17 16:37:235163ブラウズ

開発では、より適切な表示と使用のためにデータを並べ替える必要があることがよくあります。 2 次元配列の場合、特定のデータ フィールドに従って並べ替えを実行できます。この記事では、PHP を使用して 2 次元配列をソートする方法を紹介します。

1. sort() 関数を使用して 2 次元配列を並べ替える

sort() は、配列内の値を昇順に並べ替えることができる PHP の組み込み関数です注文。 2 次元配列をソートする場合、sort() 関数はデフォルトで配列の最初のフィールドでソートします。たとえば、2 次元配列があります:

$arr = array(
     array('id'=>2,'name'=>'li', 'age'=>20),
     array('id'=>1,'name'=>'zhang', 'age'=>22),
     array('id'=>3,'name'=>'wang', 'age'=>18)
);

sort() 関数を使用して、id フィールドで並べ替えることができます:

sort($arr);
print_r($arr);

出力結果は次のとおりです:

Array
(
    [0] => Array
        (
            [age] => 18
            [id] => 3
            [name] => wang
        )

    [1] => Array
        (
            [age] => 20
            [id] => 2
            [name] => li
        )

    [2] => Array
        (
            [age] => 22
            [id] => 1
            [name] => zhang
        )

)

ID フィールドに従って並べ替えた後、配列内の要素が昇順に配置されていることがわかります。

2. usort() 関数を使用して 2 次元配列を並べ替えます

sort() 関数は、配列の最初のフィールドのみを並べ替えることができます。他のフィールドで並べ替えたい場合は、 、usort() 関数を使用する必要があります。 usort() 関数は、並べ替えルールを指定するためにカスタム コールバック関数を渡す必要があります。たとえば、年齢フィールドで並べ替えたいとします:

function cmp($a, $b)
{
    if ($a['age'] == $b['age']) {
        return 0;
    }
    return ($a['age'] <$ b[&#39;age&#39;]) ? -1 : 1;
}

usort($arr, "cmp");
print_r($arr);

出力結果は次のようになります:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => wang
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => li
            [age] => 20
        )

    [2] => Array
        (
            [id] => 1
            [name] => zhang
            [age] => 22
        )

)

年齢フィールドで並べ替えた後、配列内の要素が配置されていることがわかります。年齢の昇順に。

3. array_multisort() 関数を使用して 2 次元配列を並べ替える

array_multisort() 関数は、複数の条件に従って 2 次元配列を並べ替えることができる非常に強力な並べ替え関数です。複数のフィールドで並べ替える場合は、array_multisort() 関数を使用できます。たとえば、最初に年齢フィールドでソートする必要があり、年齢が同じ場合は ID でソートします:

$ages = array();
$ids = array();
foreach ($arr as $key => $value) {
    $ages[$key] = $value['age'];
    $ids[$key] = $value['id'];
}
array_multisort($ages, SORT_ASC, $ids, SORT_ASC, $arr);

print_r($arr);

出力結果は:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => wang
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => li
            [age] => 20
        )

    [2] => Array
        (
            [id] => 1
            [name] => zhang
            [age] => 22
        )

)

であることがわかります。 ageフィールドとidフィールドでソートした後、配列内の要素を年齢の昇順に並べ、年齢が同じ場合はidの昇順に並べます。

概要:

この記事では、sort() 関数、usort() 関数、array_multisort() 関数を使用して、2 次元配列を並べ替える 3 つの方法を紹介します。開発において、どの方法を選択するかは、特定のニーズによって異なります。この記事が皆さんのお役に立てば幸いです。

以上がPHPで2次元配列をソートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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