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 ?>