Maison  >  Article  >  développement back-end  >  Comment trier des tableaux bidimensionnels en PHP tout en gardant les noms de clés inchangés

Comment trier des tableaux bidimensionnels en PHP tout en gardant les noms de clés inchangés

coldplay.xixi
coldplay.xixiavant
2020-08-11 16:21:112672parcourir

Comment trier des tableaux bidimensionnels en PHP tout en gardant les noms de clés inchangés

Pour trier le 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 :

<?php
$data = array(
    1001 => array(
        &#39;age&#39; => 22,
        &#39;name&#39; => &#39;鸠摩智&#39;
    ),
    1007 => array(
        &#39;age&#39; => 21,
        &#39;name&#39; => &#39;慕容复&#39;
    ),
    1004 => array(
        &#39;age&#39; => 27,
        &#39;name&#39; => &#39;乔帮主&#39;
    )
);
 

 = array_column(, &#39;age&#39;(, SORT_ASC, ();

Les amis prudents verront que le nom de la clé a été réinitialisé et que le nom de la clé commence à 0. Évidemment, cela ne peut pas être le résultat que nous voulons, alors Comment garder le nom de la clé inchangé ?

Regardons un autre exemple :

$data = array(    1001 => array(        &#39;age&#39; => 22,
        &#39;name&#39; => &#39;鸠摩智&#39;
    ),
    1007 => array(        &#39;age&#39; => 21,
        &#39;name&#39; => &#39;慕容复&#39;
    ),
    1004 => 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;
}

Ici, nous pouvons également simplifier la fonction arraySort, et le résultat du traitement est 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 = &#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;
}

À partir des résultats ci-dessus, nous voyons :


Les noms de clés restent inchangés. Le principe de mise en œuvre est très simple, retirez d'abord les noms de clés, puis triez les noms de clés, puis attribuez les noms de clés correspondants pour en former un nouveau. tableau et retournez-le.

Comme vous pouvez le voir, ici nous utilisons principalement plusieurs fonctions de tri principales de PHP

asort() 对关联数组按照键值进行升序排序。

arsort()对关联数组按照键值进行降序排序。

natsort() 实现了“自然排序”,即数字从 1 到 9 的排序方法,字母从 a 到 z 的排序方法,短的优先。数组的索引与单元值保持关联,
注意:在自然排序算法中,数字 2 小于 数字 10。在计算机排序算法中,10 小于 2,因为 "10" 中的第一个数字小于 2。

Recommandations d'apprentissage associées :

programmation php (vidéo)

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