ホームページ >バックエンド開発 >PHPの問題 >PHPで配列内の要素を並べ替える方法

PHPで配列内の要素を並べ替える方法

PHPz
PHPzオリジナル
2023-04-18 15:23:33544ブラウズ

PHP では、2 次元配列の並べ替えには、組み込み関数 usort() および uasort() を使用できます。どちらの関数も配列内の要素を並べ替えることができますが、実装は少し異なります。

usort() 関数は元の配列を並べ替えてブール値を返しますが、uasort() 関数は元の配列を並べ替えますが、キーは保持します。値ペア それらの間の関連付けは、新しいインデックス配列が作成されないことを意味します。以下では、これら 2 つの機能のそれぞれの使用方法を紹介します。

usort()Function

usort()関数の最初のパラメータは並べ替える必要がある配列で、2 番目のパラメータはソートする必要があります。は比較関数であり、並べ替える必要がある配列内の要素の位置を交換し、ブール値を返すことによって実装されます。

//示例数组$students
$students = array(
    array("name" => "张三", "age" => 22),
    array("name" => "李四", "age" => 20),
    array("name" => "王五", "age" => 25)
);

//比较函数cmp
function cmp($a, $b){
    if ($a["age"] == $b["age"]) {
        return 0;
    }
    return ($a["age"] < $b["age"]) ? -1 : 1;
}

//使用usort()排序
usort($students, "cmp");

//输出结果
var_dump($students);

上記のコードでは、まず 3 つの要素を含む 2 次元配列 $students を定義します。各要素には 2 つのキーと値のペア「name」と「age」が含まれます。

次に、比較関数 cmp を定義します。この関数は、「age」キーと値のペアの 2 つの要素の値を比較することによって、要素間の相対的な順序を決定します。 2 つの要素の「年齢」が等しい場合は 0 が返され、$a の「年齢」が $b の「年齢」より小さい場合は、$a が $ より前であることを示す -1 が返されます。 b; それ以外の場合は、$a が $b の後にあることを示す 1 が返されます。

最後に、usort() 関数を使用して、cmp 関数で定義されたルールに従って配列 $students を並べ替えます。出力から、配列内の要素が「age」キーと値のペアに従って小さいものから大きいものへと並べ替えられていることがわかります。

uasort()関数

uasort()関数の実装は usort() と似ていますが、 Different キーと値のペア間の関連付けを保持し、新しいインデックス配列を作成しません。したがって、要素のサイズを比較するだけでなく、キーと値のペアの関連付けも維持する、より複雑な比較関数が必要になります。

//示例数组$students
$students = array(
    "stu1" => array("name" => "张三", "age" => 22),
    "stu2" => array("name" => "李四", "age" => 20),
    "stu3" => array("name" => "王五", "age" => 25)
);

//比较函数cmp
function cmp($a, $b){
    if ($a["age"] == $b["age"]) {
        return 0;
    }
    return ($a["age"] < $b["age"]) ? -1 : 1;
}

//使用usort()排序
uasort($students, "cmp");

//输出结果
var_dump($students);

上記のコードでは、まず 3 つの要素を含む 2 次元の連想配列 $students を定義します。各要素には 2 つのキーと値のペア「name」と「age」が含まれます。違いは、ここでは、前の数値インデックスの代わりに、配列のキー値として文字列「stu1」、「stu2」、および「stu3」を使用していることです。

比較関数 cmp の定義方法は usort() と同じです。違いは、uasort() 関数を呼び出すときに、配列 $students と比較関数 cmp をパラメーターとして渡すことです。この関数は、cmp ルールに従って配列を並べ替えます。並べ替えられた結果は、元の結合キーと値の関係を保持します。

最後に、var_dump() 関数を通じてソート結果を出力します。ご覧のとおり、出力結果は依然として連想配列ですが、要素は「age」キーと値のペアに従って小さいものから大きいものへと並べ替えられています。

usort()uasort() に加えて、PHP は、asort()## など、他の一連の配列ソート関数も提供します。 # 、 arsort()ksort()krsort() など。開発者は、実際のニーズに応じて適切な関数を選択できます。

以上がPHPで配列内の要素を並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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