たとえば、次のような配列:
コードをコピー コードは次のとおりです:
$users = array(
array('name' => 'tom', 'age' => 20)
, array('name' => 'アニー', '年齢' => 18)
, array('名前' => 'ジャック', '年齢' => 22);
小さいものから大きいものまで年齢別に分類できればと思います。著者は2つの方法を整理して皆さんに共有しました。
1. array_multisort を使用します
この方法を使用すると、年齢を抽出して一次元配列に格納し、年齢ごとに昇順に並べる必要があります。具体的なコードは次のとおりです:
コードをコピーします コードは次のとおりです:
$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']);
b[ '名前']);
if ($al == $bl)
return 0;
return ($al > $bl) ? -1 : 1;
});
ここでは匿名関数が使用されており、必要に応じて個別に抽出できます。このうち、$a と $b は、$users 配列の下の要素として理解でき、名前の値に直接インデックスを付けて長さを計算し、長さを比較できます。
著者は 2 番目の方法を好みます。これは、ソートされたコンテンツを 1 次元配列に抽出するステップが不要であり、ソート方法がより柔軟であるためです。
http://www.bkjia.com/PHPjc/621652.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/621652.html技術記事たとえば、次のような配列です。 コードをコピーします。 コードは次のとおりです。 $users = array( array('name' = 'tom', 'age' = 20) , array('name' = 'anny', '年齢' = 18) , array('名前' = 'ジャック', '年齢' = 22) )...