1 //数组的创建 2 //1 3 $usernames = array('李彦宏','周宏伟','马云','俞敏洪','李开复'); 4 echo $usernames; //array,打印类型 5 echo '<br />'; 6 echo $usernames[1]; 7 echo '<br />'; 8 print_r($usernames);//print_r()打印变量的信息 9 10 //2 通过range()函数自动创建一个数组 11 $numbers = range(1, 10); 12 $letters = range('a', 'z'); 13 $numbers2 = range(1, 10, 2); //第三个参数表示步长 14 15 print_r($numbers); 16 echo '<br />'; 17 print_r($letters); 18 echo '<br />'; 19 print_r($numbers2); //1 3 5 7 9 20 21 22 //循环打印数组 23 //for循环,count()获得数组长度,这种必须下标从0开始,且为数字 24 for($i=0;$i<count($numbers);$i++){ 25 echo '<br />'; 26 echo $numbers[$i]; 27 } 28 //foreach()打印数组,只能打印数组 29 if(is_array($numbers)){ //如果是数组 30 foreach ($numbers as $key=>$value){ 31 echo '<br />'; 32 echo $key.'---'.$value; 33 } 34 } 35 36 //3 自定义键数组 37 $usernames = array('baisu'=>'李彦宏','taobao'=>'马云','tengxu'=>'马化腾'); 38 // print_r($usernamessernames); 39 $usernames['goggle'] = '李开复'; //追加数组 40 // print_r($usernames); 41 42 //直接创建自定义键数组 43 $userages['党'] = '22'; 44 $userages['周'] = '23'; 45 print_r($userages); 46 47 // 循环打印foreach();each();list(); 48 foreach ($userages as $key=>$value){ 49 echo '<br />'; 50 echo $key."--".$value; 51 } 52 53 // $a = each($userages); //返回数组当前键值对(是一个数组)并将数组指针向前移动一步 54 // echo $a[0].'--'.$a[1]; 55 56 while (!!$a=each($userages)){ //!!转化为布尔值,如果值存在返回1 57 echo $a[0].'--'.$a[1].'<br />'; 58 //echo $a['key'].'--'.$a['value'].'<br />'; 59 } 60 61 // $a = array('a','b','c'); //list()只能识别数字下标 62 // list($var1,$var2)=$a; //list($var1,$var2)就是将$var1='a',$var2='b' 63 // echo $var2; //b 64 65 list($name,$age)=each($userages); 66 echo $name.'---'.$age.'<br />'; 67 68 69 //reset();将数组的指针指向第一个单元上,可以对each()指针操作 70 //$a = array_unique();创建一个新数组,新数组移除原数组中重复的值,原数组不动 71 //array_flip();对调数组中的键和值,不会改变本体,而是返回新数组,同上 72 73 74 //4 数组里的数组:二维数组 75 $products=array( 76 array('苹果',1), 77 array('橘子',2), 78 array('栗子',3) 79 ); 80 // print_r($products); 81 //双重循环打印数组 82 // echo count($products); //3 83 for ($i=0;$i<count($products);++$i){ 84 for ($j=0;$j<count($products[$i]);++$j){ 85 echo $products[$i][$j].'|'; 86 } 87 echo '<br />'; 88 } 89 90 //双重循环打印二维数组 91 $products=array( 92 array('产品名'=>'苹果','数量'=>1), 93 array('产品名'=>'苹果','数量'=>1), 94 array('产品名'=>'苹果','数量'=>1) 95 ); 96 97 for ($i=0;$i<count($products);++$i){ 98 foreach ($products[$i] as $key=>$value){ 99 echo $key.'--'.$value.'|'; 100 } 101 echo '<br />'; 102 } 103 104 for ($i=0;$i<count($products);++$i){ 105 while (!!list($key,$value)=each($products[$i])){ 106 echo $key.'--'.$value.'|'; 107 } 108 echo '<br />'; 109 } 110 111 112 //5 数组排序 113 $fruit = array('banner','orange','apple'); 114 115 //sort(); 116 sort($fruit); 117 print_r($fruit); //a b o,中文也可以的 118 119 120 $numbers = array(2,3,4,5,6); 121 sort($numbers); 122 print_r($numbers); 123 124 //sort()函数的第二个参数是可选的。这个可选参数可以传递SORT_REGULAR(默认值)、SORT_NUMERIC或SORT_STRING。指定排序类型的功能是非常有用的。比如,当要比较可能包含有数字2和12的字符串时,从数字角度看,2要小于12,但是作为字符串,"12"却要小于"2"。 125 $numbers = array("12","2"); 126 sort($numbers,SORT_STRING);//按字符串排序 127 print_r($numbers); 128 129 //asort(),保留索引关系 130 $fruit = array('banner','orange','apple'); 131 asort($fruit); 132 print_r($fruit); 133 134 //ksort(),对键排序 135 $fruit = array('b'=>'banner','a'=>'orange','c'=>'apple'); 136 ksort($fruit); 137 print_r($fruit); 138 139 //反向排序,在前边的前边加r 140 $numbers = array(2,3,4,5,6); 141 rsort($numbers); 142 print_r($numbers); 143 144 shuffle();随机排序 145 $pic = array('mm1.jpg','mm2.jpg','mm3.jpg','mm4.jpg','mm5.jpg'); 146 shuffle($pic); //随机打乱数组 147 for ($i=0;$i<count($pic)-2;++$i){ 148 echo '<img src="images/'.$pic[$i].'" style="margin:10px;" />'; 149 echo " "; 150 } 151 152 //把数组反方向,一般array开头的不会改变原数组,生成新的数组 153 $a = array_reverse($pic); 154 print_r($a); 155 156 //6 添加函数 157 $username = array("dang"); 158 //array_unshift();开头插入元素,插入成功返回int 159 array_unshift($username, 'zhou'); 160 print_r($username); 161 //array_push();//结尾插入数据 162 array_push($username,'haha'); 163 print_r($username); 164 165 // 删除数组元素 166 array_shift($array); 删除开头元素 167 array_pop();删除结尾元素 168 169 array_rand();随机取出数组中一个或多个键,多个返回的是数组 170 $fruit = array('banner','orange','apple'); 171 $a = array_rand($fruit,1); 172 echo $fruit[$a]; 173 174 175 //7 数组指针的操作 176 // 在数组中浏览:each()、current()、reset()、end()、next()、pos()、prev(); 177 // 调用next()或each()将使指针前移一个元素。调用each($array_name)会在指针前移一个位置之前返回当前元素。next()函数则有些不同----调用next($array_name)是将指针前移,然后再返回新的当前元素。 178 // 要反向遍历一个数组,可以使用end()和prev()函数。prev()函数和next()函数相反。它是将当前指针往回移一个位置然后再返回新的当前元素。 179 $fruit = array('banner','orange','apple'); 180 $usernames = array('baisu'=>'李彦宏','taobao'=>'马云','tengxu'=>'马化腾'); 181 182 //current();获取指针的当前元素,current并没有把指针移到下一步 183 echo current($usernames); 184 185 //next();向后移一位 186 echo next($usernames); 187 echo current($usernames); 188 reset($usernames); //将指针指向第一个单元 189 echo current($usernames); 190 191 192 $usernames = array('baisu'=>'李彦宏','taobao'=>'马云','tengxu'=>'马化腾'); 193 //统计数组个数,sizeof();count(); 194 echo sizeof($usernames); 195 echo count($usernames); 196 //array_count_values()统计数组内所有值出现的个数 197 $a = array(1,2,3,3,3,2,2); 198 print_r (array_count_values($a)); 199 200 //8 将数组转换成标量变量 201 //对于一个非数字索引数组,而该数组又有许多关键字-值对,可以使用函数extract()将它们转换成一系列的标量变量。 202 //函数extract()的作用是通过一个数组创建一系列的标量变量,这些变量的名称必须是数组中关键字的名称,而变量值则是数组中的值。 203 //extract(array var_array,[int extract_type],[string prefix]); 204 $fruits = array('a'=>'apple','b'=>'banner','c'=>'orange'); 205 extract($fruits); 206 echo $a; //apple 207 echo $c; //orange