Comment trier un tableau en php et garder les valeurs clés inchangées

王林
Libérer: 2023-03-06 07:40:02
original
5702 Les gens l'ont consulté

Comment trier un tableau en PHP et garder les valeurs clés inchangées : nous devons d'abord supprimer les noms de clés du tableau, puis trier les noms de clés en fonction des valeurs correspondantes ; noms de clés pour former un nouveau tableau et renvoyer C'est tout.

Comment trier un tableau en php et garder les valeurs clés inchangées

Code d'implémentation :

(tutoriel recommandé : tutoriel vidéo 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;
}
Copier après la connexion

Ici, nous pouvons également simplifier la fonction arraySort, avec le même résultat de traitement :

/**
 * @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;
}
Copier après la connexion

Résultat de sortie :

Comment trier un tableau en php et garder les valeurs clés inchangées

Le nom de la clé reste inchangé, et l'implémentation Le principe est très simple, retirez d'abord les noms de clés, puis triez les noms de clés, puis attribuez des valeurs aux noms de clés correspondants pour former un nouveau tableau et le renvoyer.
Comme vous pouvez le constater, nous utilisons ici principalement plusieurs fonctions de tri principales de PHP.

asort() trie le tableau associatif par ordre croissant par valeur de clé.

arsort() trie le tableau associatif par ordre décroissant par valeur de clé.

natsort() implémente le "tri naturel", c'est-à-dire la méthode de tri des nombres de 1 à 9, et la méthode de tri des lettres de a à z, avec les plus courtes en premier. L'index du tableau reste associé à la valeur de la cellule.

Remarque : Dans l'algorithme de tri naturel, le nombre 2 est inférieur au nombre 10. Dans les algorithmes de tri informatique, 10 est inférieur à 2 car le premier nombre de « 10 » est inférieur à 2.

Recommandations associées : formation php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal