Concernant le tri, nous trions généralement la base de données ou nosql (par exemple : redis), puis nous l'envoyons au programme pour une utilisation directe. Cependant, nous devons parfois trier le tableau directement via PHP et stocker les données en PHP. les plus utilisés sont les objets et les tableaux, mais ceux qui sont le plus traités sont les tableaux, car il existe des bibliothèques de fonctions intégrées très riches (en fait, les objets peuvent également être compris comme des tableaux dans une certaine mesure). nous aident en grande partie à réaliser certaines fonctionnalités. Les fonctions système couramment utilisées incluent sort, asort, arsort, ksort, krsort, etc. Ici, je parle principalement du tri de tableaux bidimensionnels, de deux méthodes :
1. Trier en utilisant la propre fonction array_multisort de PHP
<?php $data = array(); $data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edition' => 6); $data[] = array('volume' => 98, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 6); $data[] = array('volume' => 67, 'edition' => 7); // 取得列的列表 foreach ($data as $key => $row) { $volume[$key] = $row['volume']; $edition[$key] = $row['edition']; } array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); print_r($data); ?>
Résultat de sortie :
Array ( [0] => Array ( [volume] => 98 [edition] => 2 ) [1] => Array ( [volume] => 86 [edition] => 1 ) [2] => Array ( [volume] => 86 [edition] => 6 ) [3] => Array ( [volume] => 85 [edition] => 6 ) [4] => Array ( [volume] => 67 [edition] => 2 ) [5] => Array ( [volume] => 67 [edition] => 7 ) )
2. Tri des fonctions personnalisées 1
<?php $data = array(); $data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edition' => 6); $data[] = array('volume' => 98, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 6); $data[] = array('volume' => 67, 'edition' => 7); // 取得列的列表 foreach ($data as $key => $row) { $volume[$key] = $row['volume']; $edition[$key] = $row['edition']; } $ret = arraySort($data, 'volume', 'desc'); print_r($ret); /** * @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); reset($keysvalue); foreach ($keysvalue as $k => $v) { $new_array[$k] = $arr[$k]; } return $new_array; } ?>
Résultat de sortie :
Array ( [3] => Array ( [volume] => 98 [edition] => 2 ) [4] => Array ( [volume] => 86 [edition] => 6 ) [1] => Array ( [volume] => 86 [edition] => 1 ) [2] => Array ( [volume] => 85 [edition] => 6 ) [5] => Array ( [volume] => 67 [edition] => 7 ) [0] => Array ( [volume] => 67 [edition] => 2 ) )
Cette personnalisation Une différence entre les fonctions et Les fonctions système sont que la fonction personnalisée ne prend en charge le tri que pour une certaine clé. Si vous souhaitez prendre en charge le tri de plusieurs clés, vous devez l'exécuter plusieurs fois ; tandis que la fonction système array_multisort peut trier plusieurs clés à la fois et spécifier plusieurs règles de tri. et les fonctions système sont assez puissantes. Il est recommandé d'utiliser les fonctions système. Après tout, elles sont implémentées en bas de C. Voici juste un exemple de la façon de trier un tableau via une fonction personnalisée. également être étendu pour prendre en charge davantage de règles de tri. Il est encore beaucoup utilisé dans des scénarios tels que les classements, les classements et les résultats.
3. Tri des fonctions personnalisées 2
La fonction suivante trie un tableau bidimensionnel donné en fonction de la valeur clé spécifiée :
function array_sort($arr,$keys,$type='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == 'asc'){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); foreach ($keysvalue as $k=>$v){ $new_array[$k] = $arr[$k]; } return $new_array; }
$array = array( array('name'=>'手机','brand'=>'诺基亚','price'=>1050), array('name'=>'笔记本电脑','brand'=>'lenovo','price'=>4300), array('name'=>'剃须刀','brand'=>'飞利浦','price'=>3100), array('name'=>'跑步机','brand'=>'三和松石','price'=>4900), array('name'=>'手表','brand'=>'卡西欧','price'=>960), array('name'=>'液晶电视','brand'=>'索尼','price'=>6299), array('name'=>'激光打印机','brand'=>'惠普','price'=>1200) ); $ShoppingList = array_sort($array,'price'); print_r($ShoppingList);