Maison php教程 php手册 php 数组排序各种方法总结

php 数组排序各种方法总结

May 25, 2016 pm 04:54 PM
foreach

在php中数组排序函数有很多很多(rsort,sort,asort,rsort,krsort,ksort,array_multisort),下面我来给各位朋友总结我们常用到的一些数组排序函数与用户自己写的数组排序实例,有需要使用的朋友可参考。

数组排序最常用的函数就是 sort($arr); 它的作用是按数组的键值升序排列,并且排序后的数组键名不再是原来的键名,是按新数组来重新设置的键名。
而有时我们要求更复杂的排序。如按键名排序,这里用到 ksort($arr); 函数,它会根据数组的键名排序,并维持原有的键值关系。相对应的 asort($arr); 函数,是按键值排序,且维持原有的键值关系。

同样原理,rsort(); arsort(); krsort(); 函数除了排序是按降序排列外,其它与sort(); rsort(); ksort(); 相同。
数组操作是PHP很重要的基础,希望能好好运用。


按键值排序
即按标识符ASCⅡ码值的大小排列顺序。

ksort(): 按照数组标识符顺序排列
krsort(): 按照数组标识符逆序排
实例1:

 代码如下 复制代码

 $languages=array(
  'c'=>'php',
  'd'=>'asp',
  'a'=>'jsp',
  'b'=>'java'
 );
 krsort($languages);
 foreach($languages as $key=>$val){
  echo "$key = $val".'
';
 };
?>

按元素值排序

asort(): 按照由小到大的顺序对数组排序;
rsort(): 按照由大到小的顺序对数组逆序排序。
 
将实例1的8-11行代码改为:

 代码如下 复制代码

asort($languages);
print_r($languages);
echo "
";
rsort($languages);
print_r($languages);


删除原有键名排序

sort(): 按照由小到大的顺序对数组排序;
rsort(): 按照由大到小的顺序对数组逆序排序。

将实例2的8-11行代码改为:

 代码如下 复制代码

sort($languages);
foreach($languages as $key=>$val){
 echo "languages[$key] = $val".'
';
};

array_multisort -- 对多个数组或多维数组进行排序
说明
bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] )

例子 1. 对多个数组排序

 代码如下 复制代码

$ar1 = array("10", 100, 100, "a");
$ar2 = array(1, 3, "2", 1);
array_multisort($ar1, $ar2);

var_dump($ar1);
var_dump($ar2);
?>

本例中经过排序后,第一个数组将包含 "10","a",100,100。第二个数组将包含 1,1,"2",3。第二个数组中的项目顺序完全和第一个数组中相应的项目(100 和 100)顺序一致。

 代码如下 复制代码

array(4) {
[0]=> string(2) "10"
[1]=> string(1) "a"
[2]=> int(100)
[3]=> int(100)
}
array(4) {
[0]=> int(1)
[1]=> int(1)
[2]=> string(1) "2"
[3]=> int(3)
}

 

例子 2. 对多维数组排序

 代码如下 复制代码

$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
                 $ar[1], SORT_NUMERIC, SORT_DESC);
?>

 

本例中经过排序后,第一个数组将包含 10,100,100,"a"(作为字符串上升排序),第二个数组将包含 1,3,"2",1(作为数值下降排序)。


PHP数组排序函数很多,也很强大
如:arsort,asort,krsort,ksort,sort…
但有时候还是满足不了我们的需求
假如有一个二维数组,我们要按二维数组中的一个值来排序
就需要用到了usort自定义数组排序


例子如下:

 代码如下 复制代码

 
 
$aa = array (array ("score"=>60),
    array ("score"=>70),
    array ("score"=>80),
    array ("score"=>90),
    array ("score"=>20),
    array ("score"=>10),
    array ("score"=>50),
    array ("score"=>30));
 
echo '------排序前输出------
';   
var_dump($aa); // 排序前输出
 
usort($aa, "cmp"); // 排序处理(从大到小)
 
echo '
------排序后输出------
';
var_dump($aa); // 排序完输出
 
/**
 * 自定义排序条件
 * @param array $a
 * @param array $b
 * @return bool
 */
function cmp($a, $b) {
 if ($a["score"] == $b["score"]) {
  return 0;
 }
 return ($a["score"] }
 
?>

输出结果:

 代码如下 复制代码

------排序前输出------
array(8) { [0]=> array(1) { ["score"]=> int(60) }
 [1]=> array(1) { ["score"]=> int(70) }
 [2]=> array(1) { ["score"]=> int(80) }
 [3]=> array(1) { ["score"]=> int(90) }
 [4]=> array(1) { ["score"]=> int(20) }
 [5]=> array(1) { ["score"]=> int(10) }
 [6]=> array(1) { ["score"]=> int(50) }
 [7]=> array(1) { ["score"]=> int(30) } }
------排序后输出------
array(8) { [0]=> array(1) { ["score"]=> int(90) }
 [1]=> array(1) { ["score"]=> int(80) }
 [2]=> array(1) { ["score"]=> int(70) }
 [3]=> array(1) { ["score"]=> int(60) }
 [4]=> array(1) { ["score"]=> int(50) }
 [5]=> array(1) { ["score"]=> int(30) }
 [6]=> array(1) { ["score"]=> int(20) }
 [7]=> array(1) { ["score"]=> int(10) } }



本文地址:

转载随意,但请附上文章地址:-)

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle est la différence entre utiliser foreach et iterator pour supprimer des éléments lors de la traversée de Java ArrayList ? Quelle est la différence entre utiliser foreach et iterator pour supprimer des éléments lors de la traversée de Java ArrayList ? Apr 27, 2023 pm 03:40 PM

1. La différence entre Iterator et foreach est la différence polymorphe (la couche inférieure de foreach est Iterator). Iterator est un type d'interface, et il ne se soucie pas du type de collection ou de tableau ; de la collection en premier, et même le type d'éléments dans la collection ; 1. Pourquoi dit-on que la couche inférieure de foreach est le code écrit par Iterator : Code décompilé : 2. La différence entre supprimer dans foreach et iterator. dans le manuel de développement Java d'Alibaba, mais aucune erreur ne sera signalée dans le cas 1, et une erreur sera signalée dans le cas 2 (java. util.ConcurrentModificationException) en premier

Comment déterminer le nombre de boucles foreach en php Comment déterminer le nombre de boucles foreach en php Jul 10, 2023 pm 02:18 PM

​Les étapes permettant à PHP de déterminer le numéro de la boucle foreach : 1. Créez un tableau de "$fruits" ; 2. Créez une variable de compteur "$counter" avec une valeur initiale de 0. 3. Utilisez "foreach" pour boucler. à travers le tableau, et augmentez la valeur de la variable compteur dans le corps de la boucle, puis affichez chaque élément et son index ; 4. Affichez la valeur de la variable compteur en dehors de la boucle "foreach" pour confirmer quel élément atteint la boucle.

PHP renvoie un tableau avec les valeurs clés inversées PHP renvoie un tableau avec les valeurs clés inversées Mar 21, 2024 pm 02:10 PM

Cet article expliquera en détail comment PHP renvoie un tableau après avoir inversé la valeur de la clé. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. PHP Key Value Flip Array Key Value Flip est une opération sur un tableau qui échange les clés et les valeurs du tableau pour générer un nouveau tableau avec la clé d'origine comme valeur et la valeur d'origine comme clé. Méthode d'implémentation En PHP, vous pouvez effectuer un retournement clé-valeur d'un tableau via les méthodes suivantes : Fonction array_flip() : La fonction array_flip() est spécialement utilisée pour les opérations de retournement clé-valeur. Il reçoit un tableau en argument et renvoie un nouveau tableau avec les clés et les valeurs échangées. $original_array=[

PHP renvoie l'élément actuel dans un tableau PHP renvoie l'élément actuel dans un tableau Mar 21, 2024 pm 12:36 PM

Cet article expliquera en détail l'élément actuel du tableau renvoyé par PHP. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. Récupérer l'élément actuel dans un tableau PHP PHP fournit une variété de méthodes pour accéder et manipuler les tableaux, notamment obtenir l'élément actuel dans un tableau. Ce qui suit présente plusieurs techniques couramment utilisées : 1. Fonction current() La fonction current() renvoie l'élément actuellement pointé par le pointeur interne du tableau. Le pointeur pointe initialement vers le premier élément du tableau. Utilisez la syntaxe suivante : $currentElement=current($array);2.key() fonction key() la fonction renvoie l'élément actuellement pointé par le pointeur interne du tableau

Quelle est la différence entre les boucles foreach et for Quelle est la différence entre les boucles foreach et for Jan 05, 2023 pm 04:26 PM

Différences : 1. for parcourt chaque élément de données via l'index, tandis que forEach parcourt les éléments de données du tableau via le programme sous-jacent JS ; 2. for peut terminer l'exécution de la boucle via le mot-clé break, mais forEach ne le peut pas ; .for peut contrôler l'exécution de la boucle en contrôlant la valeur de la variable de boucle, mais forEach ne peut pas ; 4. for peut appeler des variables de boucle en dehors de la boucle, mais forEach ne peut pas appeler des variables de boucle en dehors de la boucle ; est supérieur à forEach.

Comment parcourir les propriétés d'un objet à l'aide de la fonction forEach ? Comment parcourir les propriétés d'un objet à l'aide de la fonction forEach ? Nov 18, 2023 pm 06:10 PM

Comment parcourir les propriétés d'un objet à l'aide de la fonction forEach ? En JavaScript, nous devons souvent parcourir les propriétés des objets. Si vous souhaitez utiliser une manière concise pour parcourir les propriétés d'un objet, la fonction forEach est un très bon choix. Dans cet article, nous expliquerons comment utiliser la fonction forEach pour parcourir les propriétés d'un objet et fournirons des exemples de code spécifiques. Tout d’abord, comprenons l’utilisation de base de la fonction forEach. la fonction forEach est Java

Comment obtenir la valeur d'index de l'élément actuel dans la boucle php foreach Comment obtenir la valeur d'index de l'élément actuel dans la boucle php foreach Mar 23, 2023 am 09:17 AM

En PHP, l'instruction foreach est largement utilisée pour parcourir des tableaux et des objets. Pendant la boucle, nous avons parfois besoin de récupérer l'élément courant de la boucle. Cet article explique comment obtenir la valeur d'index de l'élément actuel dans la boucle PHP foreach.

Compétences avancées de Java Map : maîtrisez des connaissances froides que vous ne connaissez peut-être pas et améliorez vos compétences en programmation Compétences avancées de Java Map : maîtrisez des connaissances froides que vous ne connaissez peut-être pas et améliorez vos compétences en programmation Feb 19, 2024 pm 12:33 PM

Présentation de l'interface Map L'interface Map est une structure de données utilisée pour stocker des paires clé-valeur dans l'infrastructure de collection Java. Il vous permet d'utiliser des clés pour rechercher et récupérer les valeurs associées. L'interface Map fournit de nombreuses méthodes utiles, notamment put(), get(), remove(), containKey(), containValue(), size(), isEmpty(), etc. Implémentation de Map Les implémentations de Map les plus couramment utilisées en Java sont HashMap et TreeMap. HashMap est une implémentation de Map basée sur une table de hachage qui recherche et récupère rapidement les valeurs en calculant la valeur de hachage de la clé. TreeMap est une implémentation de Map basée sur des arbres rouge-noir, qui trie les clés par ordre croissant ou décroissant.

See all articles