数组的常用函数
数组的常用函数001 <?php002 /* 数组的常用函数
003*
004*数组的排序函数
005* sort()
006* rsort()
007* usort()
008* asort()
009* arsort()
010* uasort()
011* ksort()
012* krsort()
013* uksort()
014* uatsort()
015* natcasesort()
016* array_multisort()
017*
018* 1.简单的数组排序
019* sort() rsort()
020* 2.根据键名对数组排序
021* ksort() krsort()
022* 3.根据元素的值对数组排序
023* asort() arsort()
024* 4.根据"自然数排序“法对数组排序
025* natsort()//区分大小写字母比较 natcasescort()//不区分大小写字母的比较
026* 5.根据用户自定义规则对数组排序
027* usort() uasort() uksort()对键排序
028* 6.对维数组的排序
029* array_multisort()
030*
031*拆分、合并、分解、接合的数组函数
032* 1.array_slice()
033* 2.array_splice()//删除
034* 3.array_combine()//合并
035* 4.array_merge();//合并
036* 5.array_intersect();//多个数组的交集
037* 6.array_diff();//返回多个数组的差集
038*
039*数组与数据结构的函数
040* 1.使用数组实现堆栈 //先进后出
041* array_push() array_pop()
042* 2.使用数组实现队列 //先进先出
043* array_unshift() array_shift() unset()
044*
045*
046*其他与数组操作有关的函数
047* array_rand()
048* shuffle()
049* array_sum()
050* range()
051*/
052
053 //简单数组排序的使用
054 $data=array(5,8,1,7,2);
055 sort($data);//元素由小到大进行排序
056 print_r($data);//Array ( => 1 => 2 => 5 => 7 => 8 )
057 rsort($data);//元素由大到小进行排序
058 print_r($data);//Array ( => 8 => 7 => 5 => 2 => 1 )
059
060 //根据键名排序的例子
061 $data_2=array(5=>"five",8=>"eight",1=>"one",7=>"seven",2=>"two");
062 ksort($data_2);//对数组的下标进行由小到大排序
063 print_r($data_2);//Array ( => one => two => five => seven => eight )
064 krsort($data_2);//对数组的下标进行由大到小排序
065 print_r($data_2);//Array ( => eight => seven => five => two => one )
066
067
068
069 //根据元素的值对数组排序
070 $data_3=array("1"=>"Linux","a"=>"Apache","m"=>"MySQL","l"=>"PHP");
071 //asort() arsort与 sort() rsort()的区别在于 前者排序后保持原有的键名,后者不保持原有键名,且键名从0开始
072 asort($data_3);
073 print_r($data_3);//Array ( => Apache => Linux => MySQL => PHP )
074 echo '<br/>';
075 arsort($data_3);
076 print_r($data_3);//Array ( => PHP => MySQL => Linux => Apache )
077 echo '<br/>';
078 sort($data_3);
079 print_r($data_3);//Array ( => Apache => Linux => MySQL => PHP )
080 echo '<br/>';
081 rsort($data_3);
082 print_r($data_3);//Array ( => PHP => MySQL => Linux => Apache )
083
084 //根据”自然数排序法“对数组排序(0-9短者优先)
085 $data_4=array("file.txt","file11.txt","file2.txt","file22.txt");
086 sort($data_4);
087 print_r($data_4);//Array ( => file.txt => file11.txt => file2.txt => file22.txt )
088 echo '<br>';
089 natsort($data_4);
090 print_r($data_4);//Array ( => file.txt => file2.txt => file11.txt => file22.txt )
091 echo '<br>';
092 natcasesort($data_4);
093 print_r($data_4);//Array ( => file.txt => file2.txt => file11.txt => file22.txt )
094 echo '<br>';
095
096 //用户自定义排序函数
097 echo '<br/>';
098 $data_5=array("Linux","Apache","MySQL","PHP");
099 usort($data_5,"sortbylen");//通过元素长度排序
100 print_r($data_5);//Array ( => PHP => MySQL => Linux => Apache )
101 function sortbylen($one,$two){
102 if(strlen($one)==strlen($two))
103 return 0;
104 else
105 return (strlen($one)>strlen($two))?1:-1;
106 }
107
108 //拆分、合并、分解、接合的数组函数
109 echo '<br/>';
110 $data_6=array("Linux","Apache","MySQL","PHP");
111 print_r(array_slice($data_6,1,2));//取下标为1、2的元素
112 //Array ( => Apache => MySQL ) 下标重置从0开始
113 echo '<br/>';
114
115 print_r(array_slice($data_6,-2,1));//从后边的第二个开始取返回一个,不是从0开始的
116 //Array ( => MySQL ) 下标重置从0开始
117 echo '<br/>';
118
119 print_r(array_slice($data_6,1,2,true));
120 //Array ( => Apache => MySQL )保留原有的下标
121
122 echo '<br/>';
123
124
125 //array_combine()
126 $a1=array("OS","WebServer","DataBase","Language");
127 $a2=array("Linux","Apache","MySQL","PHP");
128
129 print_r(array_combine($a1,$a2));//第一个参数作为键名,第二个作为值来合并
130 //Array ( => Linux => Apache => MySQL => PHP )
131
132 echo '<br/>';
133
134 //array_merge()
135 $a3=array("OS","WebServer","DataBase","Language");
136 $a4=array("Linux","Apache","MySQL","PHP");
137 $a5=$a3+$a4;
138 print_r($a5);//因为两个数组下标重复所以显示这样
139 //Array ( => OS => WebServer => DataBase => Language )
140 echo '<br/>';
141 print_r(array_merge($a3,$a4));//合并并重新索引
142 //Array ( => OS => WebServer => DataBase => Language => Linux => Apache => MySQL => PHP )
143
144 echo '<br/>';
145
146 //array_intersect()
147 $a7=array("OS","WebServer","DataBase","Language",1,2,3);
148 $a8=array("Linux","Apache","MySQL","PHP",2,3,4);
149 print_r(array_intersect($a7,$a8));//Array ( => 2 => 3 )
150 echo '<br/>';
151
152 //array_diff()
153 $a9=array(1,2,3,4);
154 $a10=array(3,4,5,6);
155 print_r(array_diff($a9,$a10));//Array ( => 1 => 2 )
156 //返回第一个数组跟第二个相差的元素
157 echo '<br/>';
158
159
160 //使用数组实现堆栈
161 $b=array(1,2,3,4);
162 $b[]="a";//入栈
163 array_push($b,"b","c");//使用函数入栈
164 print_r($b);//Array ( => 1 => 2 => 3 => 4 => a => b => c )
165 echo '<br/>';
166
167 $value=array_pop($b);//使用函数出栈
168 print_r($b);//Array ( => 1 => 2 => 3 => 4 => a => b )
169 echo '<br/>';
170 echo $value;//显示出栈的元素的值 c
171 echo '<br/>';
172
173 //使用数组实现队列
174 $c=array(1,2,3);
175 print_r($c);//Array ( => 1 => 2 => 3 )
176 echo '<br/>';
177 array_unshift($c,"abc","bcd");//入队
178 print_r($c);//Array ( => abc => bcd => 1 => 2 => 3 )
179 echo '<br/>';
180 $values=array_shift($c);//出队
181 print_r($c);// Array ( => bcd => 1 => 2 => 3 )
182 echo '<br/>';
183 unset($c);//删除指定位置元素
184 print_r($c);//Array ( => bcd => 1 => 3 )
185 echo '<br/>';
186
187
188 //array_rand()随机返回数组下标
189 $arr=array(1,3,4,5,76,7,99,6,2,3);
190 echo array_rand($arr);//返回的是随机的数组元素的下标
191 echo $arr;//随机显示数组元素的值
192 echo '<br/>';
193 //shuffle()随机重新排列数组
194 $arr2=array(32,35,33);
195 shuffle($arr2);
196 print_r($arr2);//数组元素位置随机变换
197 echo '<br/>';
198 //array_sum()求和
199 $arr3=array(1,3,5);
200 echo array_sum($arr3); //返回9
201 echo '<br/>';
202 print_r($arr3);//Array ( => 1 => 3 => 5 )
203 echo '<br/>';
204 //range(最小值,最大值,步长)
205 $arr4=range(0,100,10);
206 print_r($arr4);//Array ( => 0 => 10 => 20 => 30 => 40 => 50 => 60 => 70 => 80 => 90 => 100 )
207
208 ?>
页:
[1]