ホームページ  >  記事  >  バックエンド開発  >  PHPで配列をソートし、キー値を変更しないようにする方法

PHPで配列をソートし、キー値を変更しないようにする方法

王林
王林オリジナル
2020-09-28 13:20:405684ブラウズ

php メソッドで配列をソートし、キー値を変更しないようにします: まず配列のキー名を取り出し、次にキー名をソートし、最後に対応するキーに従って値を割り当てます。名前を指定して新しい配列を形成し、返すだけです。

PHPで配列をソートし、キー値を変更しないようにする方法

実装コード:

(推奨チュートリアル: php ビデオ チュートリアル)

$data = array(
    1001 => array(
        'age' => 22,
        'name' => '鸠摩智'
    ),
    1007 => array(
        'age' => 21,
        'name' => '慕容复'
    ),
    1004 => array(
        'age' => 27,
        'name' => '乔帮主'
    )
);
//根据字段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 = 'asc')
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }

    if ($type == 'asc') {
        natsort($keysvalue);
    }
    if ($type == 'desc') {
        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 = 'asc')
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }

    $type == 'asc' ? asort($keysvalue) : arsort($keysvalue);
    foreach ($keysvalue as $k => $v) {
        $new_array[$k] = $arr[$k];
    }
    return $new_array;
}

出力結果:

PHPで配列をソートし、キー値を変更しないようにする方法

キー名は残ります変更せず、実装 原理は非常に単純で、最初にキー名を取り出し、次にキー名を並べ替え、次に対応するキー名に値を代入して新しい配列を形成し、それを返します。
ご覧のとおり、ここでは主に PHP のいくつかのコアソート関数を使用します。

asort() は、キー値の昇順で連想配列をソートします。

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

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

注: 自然並べ替えアルゴリズムでは、数値 2 は数値 10 より小さくなります。コンピューターの並べ替えアルゴリズムでは、「10」の最初の数字が 2 未満であるため、10 は 2 未満です。

関連する推奨事項: php トレーニング

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

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