博客列表 >数组的排序

数组的排序

后网络时代
后网络时代原创
2021年02月04日 17:53:01868浏览

数组的排序, 数组的合并, 数组成员的统计, 数组的交差并补等,任意选一个专题,至少10个函数,写出演示案例并提交到博客中

  1. <?php
  2. // natsort ( array &$array ) : bool 成功时返回 true, 或者在失败时返回 false。
  3. //自然排序发
  4. $negative = array('-5','3','-2','0','-1000','9','1');
  5. natsort($negative);
  6. print_r($negative);
  7. echo "<br>";
  8. // asort — 对数组进行排序并保持索引关系
  9. // asort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
  10. // 本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
  11. echo "<hr>";
  12. // sort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
  13. // 本函数对数组进行排序。 当本函数结束时数组单元将被从最低到最高重新安排。
  14. // 如果两个成员完全相同,那么它们在排序数组中的相对顺序是未定义的。
  15. // SORT_REGULAR - 正常比较单元 详细描述参见 比较运算符 章节
  16. // SORT_NUMERIC - 单元被作为数字来比较
  17. // SORT_STRING - 单元被作为字符串来比较
  18. // SORT_LOCALE_STRING - 根据当前的区域(locale)设置来把单元当作字符串比较,可以用 setlocale() 来改变。
  19. // SORT_NATURAL - 和 natsort() 类似对每个单元以“自然的顺序”对字符串进行排序。
  20. // SORT_FLAG_CASE - 能够与 SORT_STRING 或 SORT_NATURAL 合并(OR 位运算),不区分大小写排序字符串。
  21. $arr2=['-56','3','-3','0','1000','99','1','a'];
  22. // SORT_REGULAR - 正常比较单元
  23. sort ($arr2);
  24. print_r($arr2);
  25. echo "<br>";
  26. // SORT_NUMERIC 注意字符转化成数字时候全变成0;
  27. $arr2=['-56','3','-3','0','1000','99','1','a'];
  28. sort ($arr2,SORT_NUMERIC);
  29. print_r($arr2);
  30. echo "<br>";
  31. $arr2=['-56','3','-8','0','-1000','9','11',];
  32. sort ($arr2,SORT_STRING);
  33. print_r($arr2);
  34. echo "<br>";
  35. $arr2=['-56','3','-8','0','-1000','9','1',];
  36. //会改变键的位置值
  37. sort ($arr2,SORT_NATURAL);
  38. print_r($arr2);
  39. echo "<br>";
  40. //SORT_FLAG_CASE区分大小写
  41. $arr = ['a', 'A','-500','-6000','3','11'];
  42. //SORT_FLAG_CASE | SORT_STRING 不区分大小写
  43. sort($arr, SORT_FLAG_CASE | SORT_STRING);
  44. print_r($arr);
  45. echo "<hr>";
  46. // array_multisort 对多个或对维数组进行排序
  47. // array_multisort ( array &$array1 , mixed $array1_sort_order = SORT_ASC , mixed $array1_sort_flags = SORT_REGULAR , mixed $... = ? ) : bool
  48. //... 可选的选项,可提供更多数组,跟随在 sort order 和 sort flag 之后。 提供的数组和之前的数组要有相同数量的元素。 换言之,排序是按字典顺序排列的。
  49. //多维数组排序数组的数量保持一致,在实际中用处不大,是根据一维数组的顺序进行排序的
  50. //建议:单独使用期进行排序,数组索引会改变
  51. $mutiarray=[16,-2,4,0,-1000];
  52. $mutiarray1=['key1'=>'abc','key2'=>'acd','1c','789','mbq'];
  53. print_r($mutiarray);
  54. print_r($mutiarray1);
  55. echo "<br>";
  56. array_multisort($mutiarray,SORT_ASC, SORT_STRING,$mutiarray1,SORT_NUMERIC, SORT_ASC);
  57. echo "<br>";
  58. echo print_r($mutiarray,true);
  59. echo "<br>";
  60. echo print_r($mutiarray1,true);
  61. echo "<br>";
  62. $mutiarray1=['key1'=>'abc','key2'=>'acd','1c','789','mbq'];
  63. array_multisort($mutiarray1,SORT_NUMERIC, SORT_ASC);
  64. echo print_r($mutiarray1,true);
  65. echo "<hr>";
  66. // natcasesort ( array &$array ) : bool
  67. // natcasesort() 是 natsort() 函数的不区分大小写字母的版本。 键值维持不变
  68. $text=['k'=>'abc.text','k1'=>'ABC.text','abc10.text','abc11.text','abc1.text'];
  69. natcasesort($text);
  70. print_r($text);
  71. echo "<hr>";
  72. // asort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
  73. //asort — 对数组进行排序并保持索引关系
  74. //sort_flags可以用可选的参数 sort_flags 改变排序的行为,详情见 sort()。
  75. $color=Array('red','blue','green','yellow','cyan','orange','lightblue','violet');
  76. asort($color);
  77. print_r($color);
  78. echo "<hr>";
  79. // ksort — 对数组按照键名排序
  80. // ksort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
  81. $ks=['a'=>'dir','b'=>'aside','c'=>'beside','d'=>'current','e'=>'form','f'=>'eat'];
  82. ksort($ks);
  83. foreach($ks as $k=>$v){
  84. echo "<pre></pre>";
  85. echo $k,'=>',$v;
  86. }
  87. echo "<hr>";
  88. // uksort : 使用用户自定义的比较函数对数组中的键名进行排序
  89. // uksort ( array &$array , callable $key_compare_func ) : bool
  90. //会改变数组的键值,排序完成后数组的键值变成了数字
  91. function comp($s1,$s2){
  92. $s1=preg_replace('#\d#','***',$s1);
  93. $s1=preg_replace('#\d#','***',$s1);
  94. return strcasecmp($s1,$s2);
  95. }
  96. $ks=['p'=>'dir','b'=>'aside','g'=>'beside','l'=>'current','a'=>'form','f'=>'eat'];
  97. uksort($ks,'comp');
  98. print_r($ks);
  99. echo "<hr>";
  100. //usort — 使用用户自定义的比较函数对数组中的值进行排序
  101. //usort ( array &$array , callable $value_compare_func ) : bool
  102. //本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
  103. $ks=['a'=>'dir','j'=>'aside','c'=>'beside','f'=>'current','e'=>'form','p'=>'eat'];
  104. usort($ks,'comp');
  105. print_r($ks);
  106. echo "<hr>";
  107. // uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
  108. // uasort ( array &$array , callable $value_compare_func ) : bool
  109. // 如果两个成员完全相同,那么它们在排序数组中的相对顺序是未定义的。
  110. $ks=['a'=>'dir','j'=>'aside','c'=>'beside','f'=>'current','e'=>'form','p'=>'eat'];
  111. uasort($ks,'comp');
  112. print_r($ks);
  113. echo "<hr>";
  114. // arsort — 对数组进行逆向排序并保持索引关系
  115. // arsort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
  116. // 本函数对数组进行排序,数组的索引保持和单元的关联。
  117. $arr2=['-56','3','-3','0','1000','99','1','a'];
  118. arsort ($arr2,SORT_NUMERIC);
  119. print_r($arr2);
  120. echo "<hr>";
  121. $fr= array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
  122. arsort($fr);
  123. echo print_r($fr,true);
  124. echo "<hr>";
  125. // krsort — 对数组按照键名逆向排序
  126. // krsort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
  127. // 对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组。
  128. $fr= array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
  129. krsort($fr);
  130. echo print_r($fr,true);
  131. echo "<hr>";
  132. // array_reverse — 返回单元顺序相反的数组
  133. // array_reverse ( array $array , bool $preserve_keys = false ) : array
  134. // $preserve_key如果设置为 true 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。
  135. $inavlue=['id'=>'779','name'=>'zhanhsan','salary'=>9000,100,200];
  136. $a=array_reverse($inavlue,true);
  137. print_r($a);
  138. echo '<br>';
  139. foreach($a as $k=>$v){
  140. echo $k,'=>',$v;
  141. echo "<pre></pre>";
  142. }
  143. ?>

效果:

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议