php学习第三章:数组处理函数(一)

一、数组的键与值

1、array_keys($array);           //获取数组所有或特定的键值对应的键名

 1 //操作数组的键的函数
 2     /**
 3      * array_keys($array, $search_value); 返回数组的键名(或指定的键值对应的键名)
 4      * @param array $array 要操作的数组
 5      * @param mixed $search_value 要查找的键值(如果该参数存在,表示只返回该键值对应的键名)
 6      * @return array
 7      */
 8     $array = array('one'=>'苹果', 'two'=>'梨', 'three'=>'桃');
 9     var_dump(array_keys($array));   //输出:array 0 => string 'one' (length=3) 1 => string 'two' (length=3)  2 => string 'three' (length=5)
10     var_dump(array_keys($array,'梨')); //输出:array 0 => string 'two' (length=3)

2、array_values($array);      //获取数组所有的值

1    /**
2      * array_values() 获取一个数组的所有元素的值
3      */
4     $array2 = array('userName'=>'张三','SEX'=>'男','Age'=>25,'home'=>'湖北');
5     var_dump(array_values($array2));   //输出:array 0 => string '张三' (length=6) 1 => string '男' (length=3) 2 => int25 3 => string'湖北' (length=6)

3、array_key_exists($key,$array);判断某个数组是否存在某个键

1 /**
2      * array_key_exists($key, $array); 判断某个键是否存在于某个数组中
3      * @param mixed $key 给定的key名
4      * @param array $array 要搜索的数组
5      * @retrun bool
6      */
7     $array1 = array('name'=>'端口网', 'url'=>'http://www.duankou.com', 'category'=>'社交网站');
8     var_dump(array_key_exists('url',$array1));    //输出:boolean true

4、in_array($value,$array);判断某个数组是否存在某个值

1 /**
2      * in_array($value,$array); //数组中是否存在某个值
3      */
4       $array1 = array('name'=>'端口网', 'url'=>'http://www.duankou.com', 'category'=>'社交网站');
5      var_dump(in_array('端口网',$array1)); //输出:true

5、array_change_key_case($array,$lower_or_$upper) ;将数组的所有的键名变成大写或小写

1 /**
2      * array_change_key_case($array, $upper_or_lower);   把关联数组的键名都变成大写或小写(改变数组的键名的大小写)
3      * @param array $array 要操作的数组
4      * @param int $upper_or_lower 是改成大写或小写(有两个常量:CASE_LOWER(小写),CASE_UPPER(大写))
5      */
6     $array2 = array('userName'=>'张三','SEX'=>'男','Age'=>25,'home'=>'湖北');
7     var_dump(array_change_key_case($array2, CASE_UPPER));  //输出:array 'USERNAME' => string '张三' (length=6) 'SEX' => string '男' (length=3) 'AGE' => int 25 'HOME' => string '湖北' (length=6)
8     var_dump(array_change_key_case($array2, CASE_LOWER));  //输出:array 'username' => string '张三' (length=6) 'sex' => string '男' (length=3) 'age' => int 25 'home' => string '湖北' (length=6)

6、array_flip($array); 将数组的键与值互换

1 /**
2      * array_flip($array) 将数组的键与值互换
3      */
4     
5     $arr2 = array('微笑'=>'img/face/smile.gif','哭泣'=>'img/face/cry.gif','生气'=>'img/face/angry.gif');
6     var_dump(array_flip($arr2)); 

二、数组元素的添加与删除

1、array_pop($array);    删除数组的最后一个元素

1 /**
2      * array_pop($array) 删除数组的最后一个元素(出栈)
3      * 
4      */
5     $score = array('羽毛球','乒乓球','篮球','足球');
6     var_dump(array_pop($score));      //输出:足球
7     var_dump($score);                 //输出:array  0 => string '羽毛球' (length=9) 1 => string '乒乓球' (length=9) 2 => string '篮球' (length=6)

2、array_push($array); 在数组的末尾添加数据

 1 /**
 2      * array_push($array,$val) 向数组的末尾添加一个或多个元素
 3      * @param array $array 要操作的数组
 4      * @param mixed $val 要添加的内容
 5      */
 6     $hello = array('hello world!','hello linux!');
 7     var_dump(array_push($hello,'hello php!'));   //输出:3
 8     var_dump($hello);
 9     /**
10      输出:
11      array
12           0 => string 'hello world!' (length=12)
13           1 => string 'hello linux!' (length=12)
14           2 => string 'hello php!' (length=10)
15      */

3、array_shift($array); 在数组的开头添加元素

 1 /**
 2      * array_shift($array) 删除数组的第一个元素
 3      */
 4     var_dump(array_shift($hello));  //输出: string 'hello world!' (length=12)
 5     var_dump($hello);
 6     /**
 7      输出:
 8      array
 9           0 => string 'hello linux!' (length=12)
10           1 => string 'hello php!' (length=10)
11 
12      */

4、array_unshift();删除数据最开头的元素

 1 /**
 2      * array_unshift($array, $val) 在数组的开头添加元素
 3      */
 4     $var = array('html','css');     
 5     var_dump(array_unshift($var, 'javascript!'));  //输出:3
 6     var_dump($var);
 7     /**
 8      输出:
 9      array
10           0 => string 'javascript!' (length=11)
11           1 => string 'html' (length=4)
12           2 => string 'css' (length=3)
13      */

四、交集与差集

有的同学可能忘记了差集与交集的概念。

交集即为两者的共同点,相当于共性;差集是我有的你没有,相当于我的个性;

如图:A与B的交集就是那团黑色的共同拥有的C,差集就是A-C那块

1、array_intersect($array1,$array2,$array3,……); 计算多个数组的交集,在此以两个数组为例

1 /**
2      * array_intersect($array1,$array2,$array3……) 计算两个或多个数组的交集
3      * 
4      */
5     $arrA = array('腾讯网','网易','搜狐');
6     $arrB = array('facebook','端口网','人人网','腾讯网','网易');
7     var_dump(array_intersect($arrA, $arrB));    //输出:array 0 => string '腾讯网' (length=9) 1 => string '网易' (length=6)

2、array_intersect_key($array1,$array2,$array3);通过数组的键来计算多个数组的交集

1 /**
2      * array_intersect_key($array1,$array2,$array3,……) 用数组的键来计算两个或多个数组的交集
3      */
4     $arrC = array('腾讯'=>'www.qq.com','人人网'=>'www.renren.com','端口网'=>'www.duankou.com','facebook'=>'www.facebook.com');
5     $arrD = array('腾讯'=>'www.pengyou.com','端口网'=>'webmain.duankou.com','百度'=>'www.baidu.com');
6     var_dump(array_intersect_key($arrC,$arrD));   //输出:array '腾讯' => string 'www.qq.com' (length=10) '端口网' => string 'www.duankou.com' (length=15)

3、array_diff($array1,$array2,$array3,……);计算多个数组的差集

1 /**
2      * array_diff($array1, $array2)求两个数组或多个数组的差集
3      * @param array $array1
4      * @param array $array2
5      */
6     $arrayF = array('one'=>'php','jsp','asp','.net');
7     $arrayG = array('two'=>'php','java','three'=>'jsp','c','c++');  
8     var_dump(array_diff($arrayF, $arrayG));//输出:array 1 => string 'asp' (length=3) 2 => string '.net' (length=4)

4、array_diff_key($array1,$array2,$array3,……);通过键名来计算多个数组的差集

1 /**
2      * array_diff_key($array1, $array2) 使用键名比较两个数组的差集
3      * 
4      */
5     
6     var_dump(array_diff_key($arrayF, $arrayG)); //输出:php,因为数组$arrayF中只有one这个键,其他的键名都是索引,所以就是one所在的键值

五、数组指针

1、current($array); 输出当前数组所在元素

2、next($array);让数组的指针向下移动一个单元

3、prev($array);计数组的指针向上移动一个单元

4、reset($array);将数组的指针指向第一个单元

5、end($array);将数组的指针指向第后一个单元

6、key($array);从关联数组中取得键名

7、list($var1,$var2,……) 将数组的值赋给一些变量

8、each($array)返回数组中当前键值对,并将数组的指针向下移动一步

 1 //指针
 2     $info = array('李渊','李世民','李志');
 3     var_dump(current($info));    //输出:李渊
 4     next($info);                //向下移动
 5     var_dump(current($info));    //输出:李世民
 6     prev($info);                //向上移动
 7     var_dump(current($info));   //输出:李渊
 8     var_dump(end($info));       //输出:李志
 9     reset($info);
10     list($first,$second,$third) = $info;
11     var_dump('唐高祖:'.$first);    //输出:唐高祖:李渊
12     var_dump('唐太宗:'.$second);    //输出:唐太宗:李世民
13     var_dump('唐高宗:'.$third);     //输出:唐高宗:李志
14     
15     var_dump(each($info)); 
16     reset($info);      
17     /**
18                输出:
19     array
20       1 => string '李渊' (length=6)
21       'value' => string '李渊' (length=6)
22       0 => int 0
23       'key' => int 0
24      */
25     while(list($key,$value) = each($info)){
26         echo '第'.($key+1).'位皇帝:'.$value.';';
27     }
28     //输出:第1位皇帝:李渊;第2位皇帝:李世民;第3位皇帝:李志;
posted @ 2012-12-03 16:02  遗梦诗心  阅读(206)  评论(0编辑  收藏  举报