php数组函数总结

今天来分享一下php数组函数的操作函数有哪些,而且怎么使用。

(1)array_change_key_case返回字符串键名全为小写或大写的数组

array array_change_key_case  ( array $input  [, int $case  = CASE_LOWER  ] )

array_change_key_case()  将 input 数组中的所有键名改为全小写或大写。改变是根据后一个选项 case 参数来进行的。本函数不改变数字索引。 

这里面的case可选值为 CASE_UPPER CASE_LOWER(默认值)。


(2)array_chunk 将一个数组分割成多个

array array_chunk  ( array $input  , int $size  [, bool $preserve_keys  = false  ] )

将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size 个。 

$input是你要进行改变的数组,$size是每个分割出来的数组大小,第三个是是否使用原来的键名。默认是false从零开始,所以要保持键名的话就要写true。


(3)array_column返回数组中指定的一列

array array_column  ( array $input  , mixed  $column_key  [, mixed  $index_key  ] )

array_column()  返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。 

$input是要在取列的数组,$column_key是要取那一列的键名,$index_key是使用什么键名的值来做列数组的键名。

例子:

<?php
 // Array representing a possible record set returned from a database
 $records  = array(
    array(
         'id'  =>  2135 ,
         'first_name'  =>  'John' ,
         'last_name'  =>  'Doe' ,
    ),
    array(
         'id'  =>  3245 ,
         'first_name'  =>  'Sally' ,
         'last_name'  =>  'Smith' ,
    ),
    array(
         'id'  =>  5342 ,
         'first_name'  =>  'Jane' ,
         'last_name'  =>  'Jones' ,
    ),
    array(
         'id'  =>  5623 ,
         'first_name'  =>  'Peter' ,
         'last_name'  =>  'Doe' ,
    )
);
 
 $first_names  =  array_column ( $records ,  'first_name' ,id);
 print_r ( $first_names );
 ?> 

结果如下:

Array
(
    [2135] => Doe
    [3245] => Smith
    [5342] => Jones
    [5623] => Doe
)

(4)array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

array array_combine  ( array $keys  , array $values  )

返回一个 array ,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。 

这个函数可以使两个数组合并成为一个数组,第一个做键,第二个做值。如果是两个数组的数量不相同的话,那么函数返回false。


(5)array_count_values统计数组中所有的值出现的次数

array array_count_values  ( array $input  )

array_count_values()  返回一个数组,该数组用 input 数组中的值作为键名,该值在 input 数组中出现的次数作为值。 

这个函数统计$input里面的值出现的次数,生成的新数组中,使用$input的值做新数组的键,然后出现的次数做它的值。

<?php
$array  = array( 1 ,  "hello" ,  1 ,  "world" ,  "hello" );
 print_r ( array_count_values ( $array ));
 ?>   


以上例程会输出:


Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)


(6) array_diff计算数组的差集

array array_diff  ( array $array1  , array $array2  [, array $...  ] )

对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。 

返回一个数组,这个数组只是在$array1里面存在,而是不在其它的参数数组里面的值,这里返回的数组键名是不会变的。

<?php
$array1  = array( "a"  =>  "green" ,  "red" ,  "blue" ,  "red" );
 $array2  = array( "b"  =>  "green" ,  "yellow" ,  "red" );
 $result  =  array_diff ( $array1 ,  $array2 );

 print_r ( $result );
 ?>   


在 $array1  中多次出现的值一样处理,输出结果为: 


Array
(
    [1] => blue
)




(7)array_diff_assoc带索引检查计算数组的差集

array array_diff_assoc  ( array $array1  , array $array2  [, array $...  ] )

array_diff_assoc()  返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和 array_diff()  不同的是键名也用于比较。 
上面的例子中可以看到键值对 "a" => "green" 在两个数组中都有,因此不在本函数的输出中。与此不同,键值对 0 => "red" 出现在输出中是因为第二个参数中的 "red" 的键名是 1。 


<?php
$array1  = array( "a"  =>  "green" ,  "b"  =>  "brown" ,  "c"  =>  "blue" ,  "red" );
 $array2  = array( "a"  =>  "green" ,  "yellow" ,  "red" );
 $result  =  array_diff_assoc ( $array1 ,  $array2 );
 print_r ( $result );
 ?>   


以上例程会输出:


Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

(8) array_diff_key使用键名比较计算数组的差集

array array_diff_key  ( array $array1  , array $array2  [, array $...  ] )

根据 array1 中的键名和 array2 进行比较,返回不同键名的项。 本函数和 array_diff()  相同只除了比较是根据键名而不是值来进行的。
这里采用的是键名的比较,如果$array1存在的键名与其它参数数组的键名一样就排除,只要都没出现过的键名。然后提取$array里的键和值,返回一个数组。

<?php
$array1  = array( 'blue'   =>  1 ,  'red'   =>  2 ,  'green'   =>  3 ,  'purple'  =>  4 );
 $array2  = array( 'green'  =>  5 ,  'blue'  =>  6 ,  'yellow'  =>  7 ,  'cyan'    =>  8 );

 var_dump ( array_diff_key ( $array1 ,  $array2 ));
 ?>   


以上例程会输出:


array(2) {
  ["red"]=>
  int(2)
  ["purple"]=>
  int(4)
}


(9) array_diff_uassoc用用户提供的回调函数做索引检查来计算数组的差集

array array_diff_uassoc  ( array $array1  , array $array2  [, array $...  ], callable  $key_compare_func  )

对比了 array1 和 array2 并返回不同之处。 注意和 array_diff()  不同的是键名也用于比较。 

和 array_diff_assoc()  不同的是使用了用户自定义的回调函数,而不是内置的函数。 

这个函数与array_diff_assoc函数功能差不多,都是做键名和值一起比较,但是这个函数不同在是要自己写回调函数来进行对比的。

<?php
 function  key_compare_func ( $a ,  $b )
{
    if ( $a  ===  $b ) {
        return  0 ;
    }
    return ( $a  >  $b )?  1 :- 1 ;
}

 $array1  = array( "a"  =>  "green" ,  "b"  =>  "brown" ,  "c"  =>  "blue" ,  "red" );
 $array2  = array( "a"  =>  "green" ,  "yellow" ,  "red" );
 $result  =  array_diff_uassoc ( $array1 ,  $array2 ,  "key_compare_func" );
 print_r ( $result );
 ?>   


以上例程会输出:


Array
(
    [b] => brown
    [c] => blue
    [0] => red
)


(10) array_diff_ukey用回调函数对键名比较计算数组的差集

array array_diff_ukey  ( array $array1  , array $array2  [, array $ ...  ], callable  $key_compare_func  )

array_diff_ukey()  返回一个数组,该数组包括了所有出现在 array1 中但是未出现在任何其它参数数组中的键名的值。注意关联关系保留不变。本函数和 array_diff()  相同只除了比较是根据键名而不是值来进行的。 

此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。 

这里的回调函数返回0的话,说明这个值不会返回。

<?php
 function  key_compare_func ( $key1 ,  $key2 )
{
    if ( $key1  ==  $key2 )
        return  0 ;
    else if ( $key1  >  $key2 )
        return  1 ;
    else
        return - 1 ;
}

 $array1  = array( 'blue'   =>  1 ,  'red'   =>  2 ,  'green'   =>  3 ,  'purple'  =>  4 );
 $array2  = array( 'green'  =>  5 ,  'blue'  =>  6 ,  'yellow'  =>  7 ,  'cyan'    =>  8 );

 var_dump ( array_diff_ukey ( $array1 ,  $array2 ,  'key_compare_func' ));
 ?>   


以上例程会输出:


array(2) {
  ["red"]=>
  int(2)
  ["purple"]=>
  int(4)
}



(11)array_fill用给定的值填充数组

array array_fill  ( int $start_index  , int $num  , mixed  $value  )

array_fill()  用 value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。 

$start_index是用来表示开始的键名,如果这里的键名小余0,则之后的键名直接是0,而不是一直加上去。$num为填充的数量,$value表示填充的值。

<?php
$a  =  array_fill ( 5 ,  6 ,  'banana' );
 $b  =  array_fill (- 2 ,  4 ,  'pear' );
 print_r ( $a );
 print_r ( $b );
 ?>   


以上例程会输出:


Array
(
    [5]  => banana
    [6]  => banana
    [7]  => banana
    [8]  => banana
    [9]  => banana
    [10] => banana
)
Array
(
    [-2] => pear
    [0] => pear
    [1] => pear
    [2] => pear
)


(12) array_fill_keys使用指定的键和值填充数组

array array_fill_keys  ( array $keys  , mixed  $value  )

使用 value 参数的值作为值,使用 keys 数组的值作为键来填充一个数组。 

这里的$key是要填充的数组,$value是要填充的值。如果使用不合法的键名,那么会自动转换为字符串。


(13)array_filter 用回调函数过滤数组中的单元     

array array_filter  ( array $input  [, callable  $callback  = ""  ] )

依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE ,则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。 

这是一个过滤函数,如果$input里面的键值为false,null,‘’时,且是默认的$callback函数时。会自动的过滤这三种元素。而且键名不变。也可以自定义callback函数,只要是返回false的值都会被删除出数组。

<?php

$entry  = array(
              0  =>  'foo' ,
              1  =>  false ,
              2  => - 1 ,
              3  =>  null ,
              4  =>  ''
           );

 print_r ( array_filter ( $entry ));
 ?>   


以上例程会输出:


Array
(
    [0] => foo
    [2] => -1
)


(14) array_flip交换数组中的键和值

array array_flip  ( array $trans  )

array_flip()  返回一个反转后的 array ,例如 trans 中的键名变成了值,而 trans 中的值成了键名。 

注意 trans 中的值需要能够作为合法的键名,例如需要是 integer  或者 string 。如果值的类型不对将发出一个警告,并且有问题的键/值对将不会反转。 

如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。 

<?php
$trans  = array( "a"  =>  1 ,  "b"  =>  1 ,  "c"  =>  2 );
 $trans  =  array_flip ( $trans );
 print_r ( $trans );
 ?>   


现在 $trans  是: 


Array
(
    [1] => b
    [2] => c
)


(15) array_intersect计算数组的交集

array array_intersect  ( array $array1  , array $array2  [, array $ ...  ] )

array_intersect()  返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。 

<?php
$array1  = array( "a"  =>  "green" ,  "red" ,  "blue" );
 $array2  = array( "b"  =>  "green" ,  "yellow" ,  "red" );
 $result  =  array_intersect ( $array1 ,  $array2 );
 print_r ( $result );
 ?>   


以上例程会输出:


Array
(
    [a] => green
    [0] => red
)












未完待续。。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值