首页 > 代码库 > 6-6-1-php数组相关(2)

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 = "http://www.mamicode.com/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] )

创建并返回指定范围的数组。

 

6-6-1-php数组相关(2)