PHP--每日十个数组函数的学习

来源:互联网 发布:数据修炼系统顶点 编辑:程序博客网 时间:2024/06/12 20:19

掌握PHP基础知识,了解数组函数必不可少,下面我们就来看看有哪些数组函数,每日花十几二十分钟学习十个,贵在坚持


1、array array_change_key_case ( array $input [, int $case = CASE_LOWER ] )
说明:将 input 数组中的所有键名改为全小写或大写。改变是根据后一个选项 case 参数来进行的。本函数不改变数             字索引。
参数:$input:将要输入的数组 $case:可以在这里用两个常量, CASE_UPPER 或 CASE_LOWER (默认值)。
返回值:返回一个数组,如果输入的input不是数组则返回false


2、array array_chunk ( array $input , int $size [, bool  $preserve_keys = false ] )
说明:将input数组中分割为多个数组,每一个数组的长度都是size,最后一个数组的长度小于等于size
参数:$input:需要被分割的数组 $size:分割的数组的长度
           $preserve_keys:默认false不保留数组原来键名,为TRUE时保留数组原来的键名当保留原来的键名时,无论是            索引数组还是关联数组,被分割后的数组的值对应的都是原来的键名当不保留原来的键名,索引从0开始,且             是每一个分割的数组的起始索引都是零
返回值:返回的是一个多维数组,其中每一维的数组长度都是size


3、array array_column ( array $input , mixed $column_key [, mixed $index_key ] )
说明:返回 input 数组中键名为 column_key 的列,将这些列重新组合成
          一个数组。如果写入了参数$index_key,这个参数为input某一列的键名,又将这一列的值作为新产生的数组的           键名
参数:$input:原数组
           $column_key:原数组中某一列的键名
           $index_key:原数组中某一列的键名,将这列对应的值作为新数组的键名,或者索引
返回值:返回一个新组成的数组



4、array array_combine ( array $keys , array $values )
说明:返回一个 array ,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。
参数:$keys 该数组作为新数组的键名 $values 该数组作为新数组的值
返回值:返回一个数组,如果两个参数的数组单元不同则返回false



5、array array_count_values ( array $input )
说明:返回一个数组,该数组用 input 数组中的值作为键名,与该键名对应的值是该键名在 input 数组中出现的次数              作为值。
参数:$input
返回值:返回一个关联数组



6、array array_diff_assoc ( array $array1 , array $array2 [, array $... ] )
说明:返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和 array_diff() 不同的             是键名也用于比较。 该数组函数比较时,数组的键名也用于比较,即只有当键名与键值同时出现在所有数组中          才被排除掉
参数:array1,待比较的数组
          array2……,与array1相比较的其他数组
返回值:返回一个数组


7、array array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )
说明:对比了 array1 和 array2 并返回不同之处。 注意和 array_diff() 不同的是键名也用于比较。 和                  array_diff_assoc() 不同的是使用了用户自定义的回调函数而不是内置的函数。
参数:$array1,待比较的数组
           $array2……,与array1相比较的其他数组
          key_compare_func,在第一个参数小于,等于或大于第二个参数时,
         该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
          int callback ( mixed $a , mixed $b )
返回值:返回一个数组

<?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 );
?>


8、array array_diff_key ( array $array1 , array $array2 [, array $... ] )
说明:根据 array1 中的键名和 array2 进行比较,返回不同键名的项。 本函数和 array_diff() 相同只除了比较是根据              键名而不是值来进行的。 该数组函数比较时,只考虑数组的键名,即只有当键名同时出现在所有数组中才被排            除掉
参数:array1,待比较的数组
           array2……,与array1相比较的其他数组
返回值:返回一个数组,该数组包括了所有出现在 array1 中但是未出现在任何其它参数数组中的键名的值。




9、array array_diff_ukey ( array $array1 , array $array2 [, array $ ... ], callable $key_compare_func )
说明:返回一个数组,该数组包括了所有出现在 array1 中但是未出现在任何其它参数数组中的键名的值。注意关联             关系保留不变。本函数和 array_diff() 相同只除了比较是根据键名而不是值来进行的。 和 array_diff_key() 不同           的是使用了用户自定义的回调函数,而不 是内置的函数。
参数:$array1,待比较的数组
          array2……,与array1相比较的其他数组
          key_compare_func,在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等            于或大于 0 的整数。
          int callback ( mixed $a , mixed $b )

返回值:返回一个数组

10、array array_diff ( array $array1 , array $array2 [, array $... ] )
说明:对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。注意只比较数组的值

参数:$array1,待比             较的数组  
           array2……,与array1相比较的其他数组
返回值:返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。 



--------------------------------------------------我是华丽的更新分界线,补上十个吧-----------------------------------------------------


11、array array_fill_keys ( array $keys , mixed $value )
说明:使用 value 参数的值作为值,使用 keys 数组的值作为键来填充一个数组。数组key的值作为键,value为新产生的数组的值,且每一个 数组的值都相同
参数:keys :使用该数组的值作为键。非法值将被转换为 字符串 。
value :填充使用的值。
返回值:返回填充后的数组

12、array array_fill ( int $start_index , int $num , mixed $value )
说明:用 value 参数的值将一个数组填充 num 个条目,键名由start_index 参数指定的开始。

参数:int $start_index新产生的数组的起始下标
int num 新数组的元素数量,即填充的数组数量
mixed $value 填充新数组的值
返回值:填充好的值
例如:$a = array_fill ( 5 , 6 , 'banana' );
是生成一个下标从5开始,直到下标为10的六个值为banana的新数组

13、array array_filter ( array $input [, callable $callback = "" ] )
说明:依次将 input 数组中的每个值传递到 callback 函数。如果callback 函数返回 TRUE ,则 input 数组的当前值会被包含在返回 的结果数组中。数组的键名保留不变。
参数:array $input 要循环的数组
callable $callback 回调函数,在函数中可以设置过滤input中数组的值的条件
如果没有提供 callback 函数, 将删除 input 中所有等值为 FALSE 的条目。更多信息见转换为布尔值。
返回值:返回过滤后的数组

14、array array_flip ( array $trans )
说明: 返回一个反转后的 array ,例如 trans 中的键名变成了值,而 trans 中的值成了键名。
注意 trans 中的值需要能够作为合法的键名,例如需要是 integer 或者 string 。如果值的类型不对将发出一个警告,并且有问题的 键/值对将不会反转。 如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。
参数:$trans:需要交换键值对的数组
返回值:交换后的数组


15、array array_intersect_assoc ( array $array1 , array $array2 [, array $ ... ] )
说明:返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和 array_intersect() 不同的是键名也用 于比较。
带索引检查所比较数组的交集,即只有当被比较数组中键值对都相等才能返回,与array_diff_assco是相反的
参数:array1,待比较的数组
array2……,与array1相比较的其他数组
返回值:返回一个数组

16、array array_intersect_key ( array $array1 , array $array2 [, array $ ... ] )
说明:回一个数组,该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值。
与array_intersect_assoc相似,只不过比较是键名而非键值对
参数:array1,待比较的数组
array2……,与array1相比较的其他数组
返回值:返回一个数组

17、array array_intersect_uassoc ( array $array1 , array $array2 [, array $ ... ], callable $key_compare_func )
说明:返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和 array_intersect() 不同的是键名也用 于比较。 与array_intersect_assoc的区别是该函数调用的是自定义回调函数
参数:array1,待比较的数组
array2……,与array1相比较的其他数组
返回值:返回一个数组

18、array array_intersect_ukey ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )
说明:返回一个数组,该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值。
与array_intersect_ukey的区别是该函数调用的是自定义回调函数
参数:array1,待比较的数组
array2……,与array1相比较的其他数组
返回值:返回一个数组

19、array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
说明: 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
参数:array1,待比较的数组
array2……,与array1相比较的其他数组
返回值:返回一个数组

20、bool array_key_exists ( mixed $key , array $search )
说明:在给定的 key 存在于数组中时返回 TRUE 。 key 可以是任何数组索引。 array_key_exists() 也可用于对象。
参数:minxed $key:要检查的键。
array $search:一个数组,包括待检查的键
返回值:如果存在则返回TRUE 失败返回false



--------------------------------------------------我是华丽的更新分界线,补上十个吧-----------------------------------------------------


21、array_keys ( array $input [, mixed $search_value = NULL [, bool $strict = false ]] )
说明:返回 input 数组中的数字或者字符串的键名,如果指定了可选参数 search_value ,则只返回该值的键名。否则 input 数组中的所有键名都会被返回。
参数:$input:一个数组,包含了要返回的键
search_value:如果指定了这个参数,只有包含这些值的键才会返回
strict:判断在搜索的时候是否该使用严格的比较(===)。
返回值:返回 input 里的所有键

22、array array_map ( callable $callback , array $arr1 [, array $... ] )
说明:返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。 callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
参数:callback:自定义的回调函数
arr1 :一个数组,该数组的每一个元素都能在回调函数中调用,作为回调函数的第一个参数
array:一个数组,与arr1相同,作为回调函数其他参数
返回值:返回一个索引数组
例如:
1、回调函数只需要一个参数的情况
<?php
function cube ( $n )
{
return( $n * $n * $n );
}

$a = array( 1 , 2 , 3 , 4 , 5 );
$b = array_map ( "cube" , $a );
print_r ( $b );
?>
运行结果如下:
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)
2、回调函数需要两个参数的情况
<?php
$func = function( $value ) {
return $value * 2 ;
};

print_r ( array_map ( $func , range ( 1 , 5 )));
?>
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
)

23、array array_merge_recursive ( array $array1 [, array $... ] )
说明:将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。

总的来说就是将两个数组合并在一起,具有相同键名的同一级的项目合并,其他按索引顺序合并

参数:array1:要合并的初始数组。
array:数组变量列表,进行递归合并。
返回值:返回一个结果数组,其中的值合并自附加的参数。
通过一个实例更容易理解
例如:
<?php
$ar1 = array( "color" => array( "favorite" => "red" ), 5 );
$ar2 = array( 10 , "color" => array( "favorite" => "green" , "blue" ));
$result = array_merge_recursive ( $ar1 , $ar2 );
print_r ( $result );
?>
运行结果如下:

Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => green
)
[0] => blue
)
[0] => 5
[1] => 10
)

24、array array_merge ( array $array1 [, array $... ] )
说明:一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
该函数与array_merge_recursive()的区别在于,这个函数遇到相同数组名会让后一个覆盖前一个
参数:array1:要合并的初始数组。
array:数组变量列表,进行递归合并。
返回值:返回一个结果数组,其中的值合并自附加的参数。

同样举一个例子:
<?php
$array1 = array( "color" => "red" , 2 , 4 );
$array2 = array( "a" , "b" , "color" => "green" , "shape" => "trapezoid" , 4 );
$result = array_merge ( $array1 , $array2 );
print_r ( $result );
?>
执行结果如下:
Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)

25、bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $... ]]] )
说明:可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序

排序顺序标志:

1.SORT_ASC - 按照上升顺序排序
2.SORT_DESC - 按照下降顺序排序

排序类型标志:

1.SORT_REGULAR - 将项目按照通常方法比较
2.SORT_NUMERIC - 将项目按照数值比较
3.SORT_STRING - 将项目按照字符串比较

每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 - 在此之前为默认值 SORT_ASC 和 SORT_REGULAR 。

输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。

注意:!!!!!!
关联( string )键名保持不变,但数字键名会被重新索引。
本函数的参数结构有些不同寻常,但是非常灵活。第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志

参数:arr:要排序的一个 array 。
arg :接下来的每个参数可以是另一个 array 或者是为之前 array 排序标志选项参数:
SORT_ASC , SORT_DESC , SORT_REGULAR , SORT_NUMERIC , SORT_STRING .
Additional arg 's.

返回值:成功时返回 TRUE , 或者在失败时返回 FALSE 。

eg:

<?php
$ar = array(
array( "10" , 11 , 100 , 100 , "a" ),
array( 1 , 2 , "2" , 3 , 1 )
);
array_multisort ( $ar [ 0 ], SORT_ASC , SORT_STRING ,
$ar [ 1 ], SORT_NUMERIC , SORT_DESC );
var_dump ( $ar );
?>
执行结果如下:

array(2) {
[0]=> array(5) {
[0]=> string(2) "10"
[1]=> int(100)
[2]=> int(100)
[3]=> int(11)
[4]=> string(1) "a"
}
[1]=> array(5) {
[0]=> int(1)
[1]=> int(3)
[2]=> string(1) "2"
[3]=> int(2)
[4]=> int(1)
}
}

26、array array_pad ( array $input , int $pad_size , mixed $pad_value )
说明:返回 input 的一个拷贝,并用 pad_value 将其填补到 pad_size 指定的长度。如果 pad_size 为正,则数组被填补到右侧,如果为负则从左侧开始填补。如果 pad_size 的绝对值小于或等于 input 数组的长度则没有任何填补。有可能一次最多填补 1048576 个单元。
参数:input :原始的数组
pad_size :填充后数组的总长度
pad_value:填充的值

返回值:返回一个新的数组
eg:
$input = array( 12 , 10 , 9 );

$result = array_pad ( $input , 5 , 0 );
// result is array(12, 10, 9, 0, 0)

$result = array_pad ( $input , - 7 , - 1 );
// result is array(-1, -1, -1, -1, 12, 10, 9)

$result = array_pad ( $input , 2 , "noop" );
// not padded

27、mixed array_pop ( array &$array )
说明:弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL 。
参数:array:相应的数组
返回值:将数组的最后一个值返回,如果相应的数组为空,则返回null;

28、number array_product ( array $array )
说明:以整数或浮点数返回一个数组中所有值的乘积。
参数:array:相应的数组
返回值;以整数或浮点数返回一个数组中所有值的乘积。

29、int array_push ( array &$array , mixed $var [, mixed $... ] )
说明:将 array 当成一个栈,并将传入的变量压入 array 的末尾。 array 的长度将根据入栈变量的数目增加。
参数:array:相应的数组
var:要压入的值。

返回值:返回加入的新值

30、mixed array_rand ( array $input [, int $num_req = 1 ] )
说明:从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键。
参数:input :输入的数组。
num_req:指明了你想取出多少个单元。如果指定的数目超过了数组里的数量将会产生一个 E_WARNING 级别的错误。
返回值:如果你只取出一个, array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。




原创粉丝点击