Maison  >  Article  >  développement back-end  >  Introduction à la méthode de tri des tableaux bidimensionnels en PHP tout en gardant les noms de clés inchangés (exemple de code)

Introduction à la méthode de tri des tableaux bidimensionnels en PHP tout en gardant les noms de clés inchangés (exemple de code)

不言
不言avant
2019-02-27 09:42:262283parcourir

Ce que cet article vous apporte est une introduction à la méthode de tri des tableaux bidimensionnels en PHP tout en gardant les noms de clés inchangés (exemples de code). J'espère qu'il a une certaine valeur de référence. vous sera utile.

Pour trier un tableau bidimensionnel selon le nom de clé spécifié, la première chose qui me vient à l'esprit est la fonction array_multisort. J'ai déjà écrit un article sur l'utilisation de array_multisort
Sans plus tarder. regardons un exemple :

ee1e477732f941563dde11c19100b482 array(
        'age' => 22,
        'name' => '鸠摩智'
    ),
    1007 => array(
        'age' => 21,
        'name' => '慕容复'
    ),
    1004 => array(
        'age' => 27,
        'name' => '乔帮主'
    )
);
 

 = array_column(, 'age'(, SORT_ASC, ();

Les amis attentifs verront que le nom de la clé a été réinitialisé et commence à 0. Évidemment ce n'est peut-être pas ce que nous voulons. Si vous voulez le résultat, comment garder le nom de la clé inchangé ?

Regardons un autre exemple :

$data = array(
=> array(
        'age' => 22,
        'name' => '鸠摩智'
    ),
=> array(
        'age' => 21,
        'name' => '慕容复'
    ),
=> 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;
}

Ici, nous pouvons également simplifier la fonction arraySort, et le résultat sera le même :

/**
 * @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;
}

D'après les résultats ci-dessus, nous pouvons voir :

Le nom de la clé reste inchangé et la mise en œuvre Le principe est très simple. Supprimez 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 voir, ici nous utilisons principalement plusieurs fonctions de tri principales de PHP

asort() pour trier le tableau associatif par ordre croissant par valeur 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 est conservé par rapport à 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.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer