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
--------------------------------------------------我是华丽的更新分界线,补上十个吧-----------------------------------------------------
说明:返回 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() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。
- PHP--每日十个数组函数的学习
- PHP 每日学习函数之 empty 函数
- PHP 每日学习函数之 floatval 函数
- PHP每日函数学习之 str_ireplace函数
- PHP每日函数学习之 array_walk函数
- php学习笔记 数组的常用函数
- 学习PHP常犯的十个错误
- 每日PHP函数1
- 学习PHP数组函数使用方法
- php学习--5 数组,函数
- php 数组函数学习笔记
- 每日 swift 学习 (数组)
- PHP学习(十四)--数组的相关处理函数
- 每日一个php函数 get_class()
- PHP 常用的数组函数
- php常用的数组函数
- php处理数组的函数
- php管理数组的函数
- python写算法题:leetcode: 22. Generate Parentheses
- 初次接触到react-native,遇到的两个失误
- QML实现窗口拖拽与阴影
- node 连接mongodb ---小白入门
- script.sh
- PHP--每日十个数组函数的学习
- 关于DCMTK中像素存储以及getoutdata()函数的使用
- HIVE SQL 的三种查找当前日期
- JAVA 日期工具类使用总结
- 444. Sequence Reconstruction
- Linux进程间通信::读写特性和匿名管道的应用(协同进程实例)
- Android模块化开发中jar包对应的res中.9图片的处理方法
- linux嵌入式产品破解终端及telnet密码
- 绑定管脚、生成烧写SOF文件、JTAG下载