PHP-数组小记(一)
1.each()
1 <?php 2 /*each()函数取出数组当前 键值对 以 数组 形式返回,并将指针向下移动*/ 3 $a=array('id'=>1,'name'=>'mike','age'=>18,'address'=>'New York'); 4 5 var_dump(each($a));echo "<br>"; 6 var_dump(each($a));echo "<br>"; 7 var_dump(each($a));echo "<br>"; 8 var_dump(each($a));echo "<br>"; 9 var_dump(each($a));echo "<br>"; 10 ?>
2.数组的指针
1 <?php 2 /*current()和key()函数分别取得数组当前的值和键,却不移动指针*/ 3 $a=array('id'=>1,'name'=>'mike','age'=>18,'address'=>'New York'); 4 5 var_dump(current($a));echo "<br>"; 6 var_dump(current($a));echo "<br>"; 7 var_dump(current($a));echo "<br>";//都输出1 8 9 var_dump(key($a));echo "<br>"; 10 var_dump(key($a));echo "<br>"; 11 var_dump(key($a));echo "<br>";//都输出id 12 13 /*可以用prev()和next()函数将指针像前移或向后移*/ 14 next($a); 15 echo current($a);//输出mike 16 echo key($a);//输出name 17 18 prev($a); 19 echo current($a);//输出1 20 echo key($a);//输出id 21 22 /*end()直接将指针只想最后一个,reset()将指针重置到第一个*/ 23 end($a);echo current($a);//New York 24 reset($a);echo current($a);//1 25 26 /*用指针写一个遍历数组的函数*/ 27 function arraylist($a) 28 { 29 while($value=current($a)) 30 { 31 $key=key($a); 32 echo $key.'=>'.$value.','; 33 next($a); 34 } 35 reset($a); 36 } 37 arraylist($a); 38 arraylist($a); 39 ?>
3.list()
1 <?php 2 /*list()按数组的索引顺序为传入的变量赋值*/ 3 /*赋值的数组必须是索引数组*/ 4 $a=array(1,'mike',18,'New York'); 5 list($id,$name,$age,$address)=$a; 6 7 echo $id;//1 8 echo $name;//mike 9 echo $age;//18 10 echo $address;//New York 11 12 13 /*用list()和each()函数可以遍历出数组的键和值*/ 14 /*相当于foreach()*/ 15 while (list($key,$value)=each($a)){} //这里$a可是是关联数组 16 ?>
4.array_values()
1 <?php 2 /*array_values()传入一个数组,返回一个按值的顺序重建的索引数组*/ 3 4 /*处理一个顺序混乱的索引数组*/ 5 $a=array(0=>'id',5=>'name',4=>'age',2=>'address'); 6 var_dump(array_values($a)); 7 8 /*将关联数组转变为索引数组*/ 9 $b=array('id'=>1,'name'=>'mike','age'=>18,'address'=>'New York'); 10 var_dump(array_values($b)); 11 ?>
5.array_keys()和array_search()
1 <?php 2 /*通常我们都是使用数组名加下标或键名的方式获得数组的值 3 但是,如果现在想反过来,像通过数组的值获得数组的键名该怎么做呢*/ 4 5 $a=array('id'=>1,'name'=>'mike','age'=>18,'address'=>'New York','xingming'=>'mike'); 6 /*将值对应的键以数组形式返回,第三个参数致命为严格匹配,默认为false 7 为什么要以数组返回呢,因为对应值的键可能不止有一个呀*/ 8 var_dump(array_keys($a,'mike',true));//array(2) { [0]=> string(4) "name" [1]=> string(8) "xingming" } 9 10 var_dump(array_keys($a));//为指定值,那么就将所有的键按顺序返回 11 12 13 14 /*array_search()函数与array_keys()类似,都是输入值返回键名/* 15 /*不同的是它们参数的位置不同*/ 16 /*并且array_search()返回一个键名,如果有多个则只返回第一个*/ 17 var_dump(array_search('mike',$a,true));// string(4) "name" 18 ?>
6.array_key_exists()和in_array()
1 <?php 2 /*array_key_exists()用来判断数组中是否存在这个键*/ 3 $a=array('id'=>1,'name'=>'mike','age'=>18,'address'=>'New York','xingming'=>'mike'); 4 echo array_key_exists('name',$a);//1 5 6 /*如何判断一个数组中是否存在一个值呢*/ 7 /*也可以用之前的array_keys()和array_search()*/ 8 /*这里有更好的方法in_array()*/ 9 10 echo in_array('mike',$a,true);//1 11 ?>