6.6-1-php数组相关(2)
1.for比较少用遍历连续数字下标的数组,和c语言差不多,简单记录一下:
for(int $i=0;$i<count($arr);$i++){.....$arr[$i]......}
2.php有专门遍历数组而设计的foreach语句
foreach( $arr as $value ){}
foreach( $arr as $key=>$value){}
多维:使用嵌套
foreach ( $arr as $key => $arr1 ){
foreach($arr1 as $value ){ ...$value...}
}
3.使用each()函数
each($arr) -> 返回一个有四个元素的关联和索引混合的数组
并移动数组指针,直到返回false
4.list()
为数组赋值:
$info = array("coffee","brown","caffeine");
list($a , , $c)=$info;
echo $c; // caffeine
注意:list只能应用于数字索引的数组并假定索引从0开始。索引才有了后面的while(list()=each())的使用。
5.each() 和 list() 循环使用
while( list ( $key,$value) = each($arr)){}
在使用while遍历数组后,each语句已经将指针指向数组末端。再次用while语句需要使用reset()
6.使用数组内部指针控制函数遍历数组
7.数组相关函数
array_values($contacts); //数组,返回所有值
array_keys($contacts); //数组,返回所有健值
7.1.1 :
in_array(mixed needle ,array haystack, [bool strict] ); //查找某值是否在指定数组中,返回bool
needle:要查找的值(简单数据类型,数组等),
haystack:查找的数组,
strict:十分严格界定数据类型查找。
in_array函数区分查找内容的大小写。
7.1.2
$key_name = array_search("$value",$array ) //参数与上相同,检查某值是否在其中,返回其健。
7.1.3
bool array_key_exists("key_name",$array); //检查数组是否存在指定健
对数组中为null的值会返回true。而isset()会。
7.2
函数 $Array = array_flip( $Array ); //反转数组的健和值
如果一个值出现多次,则取最后一个重复的值覆盖前面的键值对。
如果有值不是字符串或数组类型,则报错。
7.3 函数 $Array = array_reverse( $Array ,bool lose_key ); //反转数组元素顺序
第二个参数是可选的,如果为true ,则键名将丢失。
8.统计元素的个数和唯一性
8.1 函数count() ,sizeof()是他的别名,功能是一样的
int count( $var , bool mode )
第一个值为传入要计数的数组或对象,第二个参数为可选,为0或1,是否递归查询多维数组中元素的个数。
count ( $web , 1) = 10 ;
8.2 函数 $Array = array_count_values ( $ Array ) //统计数组中值出现的次数
8.3 函数 $Array = array_unique ( $Array ); //删除数组中重复的值,返回没有重复的新数组。
函数先将值作为字符串排序,然后每个值保留第一次出现的键名的值。注意,先排序,并不是保留出现的第一个。
9.5.3 使用回调函数处理数组的函数
1. array array_fliter ( array input , "callback function");
第一个参数是需要过滤的数组,第二个参数是将自定义函数以字符串形式传入,
依次将第一个参数的数组的值传入第一个函数,如果返回的是true ,则相应的健值
会传入新形成的array
2.array_walk()
bool array_walk( array &array , callback funcname , (mixed data) );
第一个为要处理的数组,第二个为回调函数,
函数接收的参数依次为: 元素的值,元素的键,(mixed data)
如果需要直接作用于数组的值,将回调函数的第一个参数指定为引用,&$value
function myfunc3( &$value,$key){
$value = "web";
}
array_walk( $arr , "myfunc3");
array_map ,作用于多个数组。
9.5.4 数组排序
1.
sort(array $array , [sort_flag] ); //升序
rsort(array $array , [sort_flag] );
此方法键名被忽略,将依序重新使用数字重新索引数组下标。
sort_flag : 指定排序类型。
2.
ksort() //根据键名排序
krsort()
3.
asort() /arsort() //根据值排序
与sort()相比,将保留键名
9.5.5 拆分、合并数组
1.
array array_slice ( array array , int offset [, int length[,bool preserve_keys]])
去一段值并返回
2.
array array_splice ( array &input , int offset , [ , length [ , replacement]])
移除或替代
3.
array_combine (array key ,array value)
合并数组,第一个数组作为键,第二个数组作为值,两个参数必须有相同数目的元素
4.
array_merge ( array array1 [ , array array2 [ , array array3]])
连接数组。
如果键名有重复,则最后一个将覆盖。
如果键名是整数,将以0开始重新索引。
5.
array_intersect( array1 ,array2 , [ ,array3 ...])
交集。
键名保留不变,只有值比较
6.
array_diff( array1 ,array2 , [ , array3...])
差集
9.5.7其他一些有用的数组处理函数
1. mixed array_rand ( array input [ , int num_req ] ) )
从数组中随机选出一个或多个元素返回。
2.shuffle ( ) 把数组元素随机重新排序
3.array_sum() 返回数组所有值的总和
4.array range( mixed first , mixed second , [ , num step] )
创建并返回指定范围的数组。