您的位置:首页 > 编程语言 > PHP开发

php数组函数总结

2017-07-01 23:36 330 查看
今天来分享一下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
)


未完待续。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 php