免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2068 | 回复: 0
打印 上一主题 下一主题

数组的常用函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-11 15:08 |只看该作者 |倒序浏览
数组的常用函数
  1. 001 <?php  

  2. 002 /* 数组的常用函数  

  3. 003  *  

  4. 004  *  数组的排序函数  

  5. 005  *    sort()  

  6. 006  *    rsort()  

  7. 007  *    usort()  

  8. 008  *    asort()  

  9. 009  *    arsort()  

  10. 010  *    uasort()  

  11. 011  *    ksort()  

  12. 012  *    krsort()  

  13. 013  *    uksort()  

  14. 014  *    uatsort()  

  15. 015  *    natcasesort()  

  16. 016  *    array_multisort()  

  17. 017  *  

  18. 018  *     1.简单的数组排序  

  19. 019  *       sort() rsort()  

  20. 020  *     2.根据键名对数组排序  

  21. 021  *       ksort() krsort()  

  22. 022  *     3.根据元素的值对数组排序  

  23. 023  *       asort() arsort()  

  24. 024  *     4.根据"自然数排序“法对数组排序  

  25. 025  *       natsort()//区分大小写字母比较 natcasescort()//不区分大小写字母的比较  

  26. 026  *     5.根据用户自定义规则对数组排序  

  27. 027  *       usort() uasort() uksort()对键排序  

  28. 028  *     6.对维数组的排序  

  29. 029  *       array_multisort()  

  30. 030  *  

  31. 031  *  拆分、合并、分解、接合的数组函数  

  32. 032  *     1.array_slice()  

  33. 033  *     2.array_splice()//删除  

  34. 034  *     3.array_combine()//合并  

  35. 035  *     4.array_merge();//合并  

  36. 036  *     5.array_intersect();//多个数组的交集  

  37. 037  *     6.array_diff();//返回多个数组的差集  

  38. 038  *  

  39. 039  *  数组与数据结构的函数  

  40. 040  *    1.使用数组实现堆栈 //先进后出  

  41. 041  *      array_push() array_pop()  

  42. 042  *    2.使用数组实现队列 //先进先出  

  43. 043  *      array_unshift() array_shift() unset()  

  44. 044  *  

  45. 045  *   

  46. 046  *  其他与数组操作有关的函数  

  47. 047  *     array_rand()  

  48. 048  *     shuffle()  

  49. 049  *     array_sum()  

  50. 050  *     range()  

  51. 051  */

  52. 052   

  53. 053 //简单数组排序的使用  

  54. 054 $data=array(5,8,1,7,2);  

  55. 055 sort($data);//元素由小到大进行排序  

  56. 056 print_r($data);//Array ( [0] => 1 [1] => 2 [2] => 5 [3] => 7 [4] => 8 )  

  57. 057 rsort($data);//元素由大到小进行排序  

  58. 058 print_r($data);//Array ( [0] => 8 [1] => 7 [2] => 5 [3] => 2 [4] => 1 )  

  59. 059   

  60. 060 //根据键名排序的例子  

  61. 061 $data_2=array(5=>"five",8=>"eight",1=>"one",7=>"seven",2=>"two");  

  62. 062 ksort($data_2);//对数组的下标进行由小到大排序  

  63. 063 print_r($data_2);//Array ( [1] => one [2] => two [5] => five [7] => seven [8] => eight )  

  64. 064 krsort($data_2);//对数组的下标进行由大到小排序  

  65. 065 print_r($data_2);//Array ( [8] => eight [7] => seven [5] => five [2] => two [1] => one )  

  66. 066   

  67. 067   

  68. 068   

  69. 069 //根据元素的值对数组排序  

  70. 070 $data_3=array("1"=>"Linux","a"=>"Apache","m"=>"MySQL","l"=>"PHP");  

  71. 071 //asort() arsort  与 sort() rsort()的区别在于 前者排序后保持原有的键名,后者不保持原有键名,且键名从0开始  

  72. 072 asort($data_3);  

  73. 073 print_r($data_3);//Array ( [a] => Apache [1] => Linux [m] => MySQL [l] => PHP )  

  74. 074 echo '<br/>';  

  75. 075 arsort($data_3);  

  76. 076 print_r($data_3);//Array ( [l] => PHP [m] => MySQL [1] => Linux [a] => Apache )  

  77. 077 echo '<br/>';  

  78. 078 sort($data_3);  

  79. 079 print_r($data_3);//Array ( [0] => Apache [1] => Linux [2] => MySQL [3] => PHP )  

  80. 080 echo '<br/>';  

  81. 081 rsort($data_3);  

  82. 082 print_r($data_3);//Array ( [0] => PHP [1] => MySQL [2] => Linux [3] => Apache )  

  83. 083   

  84. 084 //根据”自然数排序法“对数组排序(0-9短者优先)  

  85. 085 $data_4=array("file.txt","file11.txt","file2.txt","file22.txt");  

  86. 086 sort($data_4);  

  87. 087 print_r($data_4);//Array ( [0] => file.txt [1] => file11.txt [2] => file2.txt [3] => file22.txt )  

  88. 088 echo '<br>';  

  89. 089 natsort($data_4);  

  90. 090 print_r($data_4);//Array ( [0] => file.txt [2] => file2.txt [1] => file11.txt [3] => file22.txt )  

  91. 091 echo '<br>';  

  92. 092 natcasesort($data_4);  

  93. 093 print_r($data_4);//Array ( [0] => file.txt [2] => file2.txt [1] => file11.txt [3] => file22.txt )  

  94. 094 echo '<br>';  

  95. 095   

  96. 096 //用户自定义排序函数  

  97. 097 echo '<br/>';  

  98. 098 $data_5=array("Linux","Apache","MySQL","PHP");  

  99. 099 usort($data_5,"sortbylen");//通过元素长度排序  

  100. 100 print_r($data_5);//Array ( [0] => PHP [1] => MySQL [2] => Linux [3] => Apache )  

  101. 101 function sortbylen($one,$two){  

  102. 102     if(strlen($one)==strlen($two))  

  103. 103         return 0;  

  104. 104     else

  105. 105         return (strlen($one)>strlen($two))?1:-1;  

  106. 106 }  

  107. 107   

  108. 108 //拆分、合并、分解、接合的数组函数  

  109. 109 echo '<br/>';  

  110. 110 $data_6=array("Linux","Apache","MySQL","PHP");  

  111. 111 print_r(array_slice($data_6,1,2));//取下标为1、2的元素  

  112. 112 //Array ( [0] => Apache [1] => MySQL ) 下标重置从0开始  

  113. 113 echo '<br/>';  

  114. 114   

  115. 115 print_r(array_slice($data_6,-2,1));//从后边的第二个开始取返回一个,不是从0开始的  

  116. 116 //Array ( [0] => MySQL ) 下标重置从0开始  

  117. 117 echo '<br/>';  

  118. 118   

  119. 119 print_r(array_slice($data_6,1,2,true));  

  120. 120 //Array ( [1] => Apache [2] => MySQL )  保留原有的下标  

  121. 121   

  122. 122 echo '<br/>';  

  123. 123   

  124. 124   

  125. 125 //array_combine()  

  126. 126 $a1=array("OS","WebServer","DataBase","Language");  

  127. 127 $a2=array("Linux","Apache","MySQL","PHP");  

  128. 128   

  129. 129 print_r(array_combine($a1,$a2));//第一个参数作为键名,第二个作为值来合并  

  130. 130 //Array ( [OS] => Linux [WebServer] => Apache [DataBase] => MySQL [Language] => PHP )   

  131. 131   

  132. 132 echo '<br/>';  

  133. 133   

  134. 134 //array_merge()  

  135. 135 $a3=array("OS","WebServer","DataBase","Language");  

  136. 136 $a4=array("Linux","Apache","MySQL","PHP");  

  137. 137 $a5=$a3+$a4;  

  138. 138 print_r($a5);//因为两个数组下标重复所以显示这样  

  139. 139 //Array ( [0] => OS [1] => WebServer [2] => DataBase [3] => Language )  

  140. 140 echo '<br/>';  

  141. 141 print_r(array_merge($a3,$a4));//合并并重新索引  

  142. 142 //Array ( [0] => OS [1] => WebServer [2] => DataBase [3] => Language [4] => Linux [5] => Apache [6] => MySQL [7] => PHP )   

  143. 143   

  144. 144 echo '<br/>';  

  145. 145   

  146. 146 //array_intersect()  

  147. 147 $a7=array("OS","WebServer","DataBase","Language",1,2,3);  

  148. 148 $a8=array("Linux","Apache","MySQL","PHP",2,3,4);  

  149. 149 print_r(array_intersect($a7,$a8));//Array ( [5] => 2 [6] => 3 )  

  150. 150 echo '<br/>';  

  151. 151   

  152. 152 //array_diff()  

  153. 153 $a9=array(1,2,3,4);  

  154. 154 $a10=array(3,4,5,6);  

  155. 155 print_r(array_diff($a9,$a10));//Array ( [0] => 1 [1] => 2 )   

  156. 156 //返回第一个数组跟第二个相差的元素  

  157. 157 echo '<br/>';  

  158. 158   

  159. 159   

  160. 160 //使用数组实现堆栈  

  161. 161 $b=array(1,2,3,4);  

  162. 162 $b[]="a";//入栈  

  163. 163 array_push($b,"b","c");//使用函数入栈  

  164. 164 print_r($b);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => a [5] => b [6] => c )  

  165. 165 echo '<br/>';  

  166. 166   

  167. 167 $value=array_pop($b);//使用函数出栈  

  168. 168 print_r($b);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => a [5] => b )  

  169. 169 echo '<br/>';  

  170. 170 echo $value;//显示出栈的元素的值 c  

  171. 171 echo '<br/>';  

  172. 172   

  173. 173 //使用数组实现队列  

  174. 174 $c=array(1,2,3);  

  175. 175 print_r($c);//Array ( [0] => 1 [1] => 2 [2] => 3 )  

  176. 176 echo '<br/>';  

  177. 177 array_unshift($c,"abc","bcd");//入队  

  178. 178 print_r($c);//Array ( [0] => abc [1] => bcd [2] => 1 [3] => 2 [4] => 3 )   

  179. 179 echo '<br/>';  

  180. 180 $values=array_shift($c);//出队  

  181. 181 print_r($c);// Array ( [0] => bcd [1] => 1 [2] => 2 [3] => 3 )  

  182. 182 echo '<br/>';  

  183. 183 unset($c[2]);//删除指定位置元素  

  184. 184 print_r($c);//Array ( [0] => bcd [1] => 1 [3] => 3 )  

  185. 185 echo '<br/>';  

  186. 186   

  187. 187   

  188. 188 //array_rand()  随机返回数组下标  

  189. 189 $arr=array(1,3,4,5,76,7,99,6,2,3);  

  190. 190 echo array_rand($arr);//返回的是随机的数组元素的下标  

  191. 191 echo $arr[array_rand($arr)];//随机显示数组元素的值  

  192. 192 echo '<br/>';  

  193. 193 //shuffle()  随机重新排列数组  

  194. 194 $arr2=array(32,35,33);  

  195. 195 shuffle($arr2);  

  196. 196 print_r($arr2);//数组元素位置随机变换  

  197. 197 echo '<br/>';  

  198. 198 //array_sum()  求和  

  199. 199 $arr3=array(1,3,5);  

  200. 200 echo array_sum($arr3); //返回9  

  201. 201 echo '<br/>';  

  202. 202 print_r($arr3);//Array ( [0] => 1 [1] => 3 [2] => 5 )  

  203. 203 echo '<br/>';  

  204. 204 //range(最小值,最大值,步长)  

  205. 205 $arr4=range(0,100,10);  

  206. 206 print_r($arr4);//Array ( [0] => 0 [1] => 10 [2] => 20 [3] => 30 [4] => 40 [5] => 50 [6] => 60 [7] => 70 [8] => 80 [9] => 90 [10] => 100 )   

  207. 207   

  208. 208 ?>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP