ホームページ php教程 PHP开发 PHPの2次元配列ソート方法(array_multisort usort)

PHPの2次元配列ソート方法(array_multisort usort)

Jan 06, 2017 pm 04:48 PM

たとえば、次のような配列:

$users = array(
    array('name' => 'tom', 'age' => 20)
    , array('name' => 'anny', 'age' => 18)
    , array('name' => 'jack', 'age' => 22)
);
ログイン後にコピー

年齢順に小さいものから大きいものまでソートできるといいですね。著者は2つの方法を整理して皆さんに共有しました。

1. array_multisortを使用します

この方法を使用すると、年齢を抽出して1次元配列に格納し、年齢ごとに昇順に並べる必要があります。具体的なコードは次のとおりです。

$ages = array();
foreach ($users as $user) {
    $ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);
ログイン後にコピー

実行後、$users はソートされた配列になり、出力して確認できます。最初に年齢で昇順に並べ替える必要があり、次に名前で昇順に並べ替える必要がある場合、メソッドは上記と同じです。つまり、追加の名前配列を抽出します。最終的な並べ替えメソッドは次のように呼び出されます:

array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
ログイン後にコピー

2 usort を使用します

このメソッドを使用する最大の利点は、より複雑な並べ替えメソッドをいくつか定義できることです。たとえば、名前の長さで降順に並べ替えます。

usort($users, function($a, $b) {
            $al = strlen($a['name']);
            $bl = strlen($b['name']);
            if ($al == $bl)
                return 0;
            return ($al > $bl) ? -1 : 1;
        });
ログイン後にコピー
ここでは匿名関数が使用されており、必要に応じて個別に抽出できます。このうち、$a と $b は、$users 配列の下の要素として理解でき、名前の値に直接インデックスを付けて長さを計算し、長さを比較できます。

著者は 2 番目の方法を好みます。これは、並べ替えられたコンテンツを 1 次元配列に抽出するステップが不要になり、並べ替え方法がより柔軟になるためです。

PHP の 2 次元配列ソート方法 (array_multisort usort) に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)