PHPでキー名を変えずに2次元配列をソートする方法の紹介(コード例)

不言
リリース: 2023-04-05 12:20:02
転載
2289 人が閲覧しました

この記事では、PHP でキー名を変えずに 2 次元配列をソートする方法 (コード例) を紹介します。一定の参考価値があります。困っている友人が参考になれば幸いです。役に立ちました。役に立ちました。

2次元配列に指定されたキー名を並べ替えるには、まずarray_multisort関数を思い浮かべると思いますが、array_multisort関数の使い方については以前記事を書きました。例を見てみましょう:

<?php
$data = array(
    1001 => array(
        'age' => 22,
        'name' => '鸠摩智'
    ),
    1007 => array(
        'age' => 21,
        'name' => '慕容复'
    ),
    1004 => array(
        'age' => 27,
        'name' => '乔帮主'
    )
);
ログイン後にコピー
 

 = array_column(, &#39;age&#39;(, SORT_ASC, ();
ログイン後にコピー

注意深い友人は、キー名がリセットされ、キー名が 0 から始まることに気づくでしょう。望む結果が得られない場合、キー名を変更しないようにするにはどうすればよいでしょうか?

別の例を見てみましょう:

$data = array(
=> array(
        &#39;age&#39; => 22,
        &#39;name&#39; => &#39;鸠摩智&#39;
    ),
=> array(
        &#39;age&#39; => 21,
        &#39;name&#39; => &#39;慕容复&#39;
    ),
=> array(
        &#39;age&#39; => 27,
        &#39;name&#39; => &#39;乔帮主&#39;
    )
);
//根据字段age对数组$data进行降序排列
$data = arraySort($data, "age", "desc" );
print_r($data);

/**
 * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序
 * @param array $arr 将要排序的数组
 * @param string $keys 指定排序的key
 * @param string $type 排序类型 asc | desc
 * @return array
 */
function arraySort($arr, $keys, $type = &#39;asc&#39;)
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }

    if ($type == &#39;asc&#39;) {
        natsort($keysvalue);
    }
    if ($type == &#39;desc&#39;) {
        natsort($keysvalue);
        $keysvalue = array_reverse($keysvalue, TRUE); // 将原数组中的元素顺序翻转,如果第二个参数指定为 true,则元素的键名保持不变
    }
    foreach ($keysvalue as $k => $v) {
        $new_array[$k] = $arr[$k];
    }
    return $new_array;
}
ログイン後にコピー

ここでは、arraySort 関数を単純化することもでき、処理結果は同じです:

/**
 * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序
 * @param array $arr 将要排序的数组
 * @param string $keys 指定排序的key
 * @param string $type 排序类型 asc | desc
 * @return array
 */
function arraySort($arr, $keys, $type = &#39;asc&#39;)
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }

    $type == &#39;asc&#39; ? asort($keysvalue) : arsort($keysvalue);
    foreach ($keysvalue as $k => $v) {
        $new_array[$k] = $arr[$k];
    }
    return $new_array;
}
ログイン後にコピー

上記の結果からわかること:


キー名は変更されず、実装原理は非常にシンプルです。まずキー名を取り出し、次にキー名をソートし、対応するキー名に値を代入して新しい配列を形成し、それを返します。

ご覧のとおり、ここでは主に PHP のいくつかのコアソート関数を使用します。

asort() は、キー値によって連想配列を昇順にソートします。

arsort() は、キー値の降順で連想配列を並べ替えます。

natsort() は「自然なソート」、つまり 1 から 9 までの数字のソート方法と、a から z までの文字のソート方法を実装しており、短いものが優先されます。配列のインデックスはセル値

に関連付けられています。 注: 自然な並べ替えアルゴリズムでは、数値 2 は数値 10 より小さくなります。コンピューターの並べ替えアルゴリズムでは、「10」の最初の数字が 2 より小さいため、10 は 2 より小さくなります。

以上がPHPでキー名を変えずに2次元配列をソートする方法の紹介(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート