php数组函数总结
2017-07-01 23:36
330 查看
今天来分享一下php数组函数的操作函数有哪些,而且怎么使用。
(1)array_change_key_case—返回字符串键名全为小写或大写的数组
这里面的case可选值为
(2)array_chunk —
将一个数组分割成多个
$input是你要进行改变的数组,$size是每个分割出来的数组大小,第三个是是否使用原来的键名。默认是false从零开始,所以要保持键名的话就要写true。
(3)array_column —返回数组中指定的一列
$input是要在取列的数组,$column_key是要取那一列的键名,$index_key是使用什么键名的值来做列数组的键名。
例子:
结果如下:
(4)array_combine —
创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
这个函数可以使两个数组合并成为一个数组,第一个做键,第二个做值。如果是两个数组的数量不相同的话,那么函数返回false。
(5)array_count_values —统计数组中所有的值出现的次数
这个函数统计$input里面的值出现的次数,生成的新数组中,使用$input的值做新数组的键,然后出现的次数做它的值。
(6)array_diff — 计算数组的差集
返回一个数组,这个数组只是在$array1里面存在,而是不在其它的参数数组里面的值,这里返回的数组键名是不会变的。
(7)array_diff_assoc —带索引检查计算数组的差集
(8)array_diff_key — 使用键名比较计算数组的差集
(9)array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集
这个函数与array_diff_assoc函数功能差不多,都是做键名和值一起比较,但是这个函数不同在是要自己写回调函数来进行对比的。
(10)array_diff_ukey — 用回调函数对键名比较计算数组的差集
这里的回调函数返回0的话,说明这个值不会返回。
(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 。如果值的类型不对将发出一个警告,并且有问题的键/值对将不会反转。
如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。
(15)array_intersect — 计算数组的交集
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
未完待续。。
(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 )
未完待续。。
相关文章推荐