常用的php数组函数的解析及例子说明

PHP数组函数解释和例子
1. array_change_key_case () 函数
作用:返回字符串键名全为小写或大写的数组
语法:array_change_key_case ( array input [, int case] )
注释:input 数组中的所有键名改为全小写或大写。改变是根据后一个选项 case 参数来进行的。可以在这里用两个常量,CASE_UPPERCASE_LOWER。默认值是 CASE_LOWER。本函数不改变数字索引。如果一个数组中的多个键名经过本函数后变成一样的话(例如 "keY" "kEY"),最后一个值将覆盖其它的值。
例子 1. array_change_key_case() 例子
  1. <?php
  2. $input_array = array("FirSt" => 1, "SecOnd" => 4);
  3. print_r(array_change_key_case($input_array, CASE_UPPER));
  4. ?>  
上例将输出:
Array([FIRST] => 1 [SECOND] => 4)
2.
array_chunk () 函数
作用:将一个数组分割成多个
语法:array_chunk ( array input, int size [, bool preserve_keys] )
注释:array_chunk() 将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少几个。得到的数组是一个多维数组中的单元,其索引从零开始。将可选参数 preserve_keys 设为 TRUE,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE,那每个结果数组将用从零开始的新数字索引。默认值是 FALSE
例子:array_chunk() 例子
上例将输出:
Array( [0] => Array ( [0] => a [1] => b)        [1] => Array ([0] => c [1] => d )    [2] => Array ( [0] => e ))
Array( [0] => Array ( [id] => a [name] => b)    [1] => Array ([0] => c [1] => d )   [2] => Array ([2] => e ))
3.
array_combine () 函数
作用:创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
语法:array_combine ( array keys, array values )
注释:返回一个 array,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。如果两个数组的单元数不同或者数组为空时返回 FALSE
例子:简单的 array_combine() 例子
上例将输出:
Array([green]  => avocado [red]    => apple [yellow] => banana)
4.
array_count_values () 函数
作用:统计数组中所有的值出现的次数
语法:array_count_values ( array input )
注释:array_count_values() 返回一个数组,该数组用 input 数组中的值作为键名,该值在 input 数组中出现的次数作为值。
例子:array_count_values() 例子
  
上例将输出:
Array([1] => 2 [hello] => 2 [world] => 1)
5.
array_fill () 函数
作用:用给定的值填充数组
语法:array_fill ( int start_index, int num, mixed value )
注释:array_fill()value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。注意 num 必须是一个大于零的数值,否则 PHP 会发出一条警告。
例子:
上例将输出:
Array([5] => banana [6] => banana [7] => banana [8] => banana [9] => banana [10] => banana)
6.
array_ filter () 函数
作用:用回调函数过滤数组中的单元
语法:array_filter ( array input [, callback callback] )
注释:依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。如果没有提供 callback 函数,array_filter() 将删除 input 中所有等值为 FALSE 的条目。
例子1
上例将输出:
Odd :
Array( [a] => 1[c] => 3[e] => 5)
Even:
Array([0] => 6[2] => 8[4] => 10 [6] => 12)  

例子 2. array_filter() callback
上例将输出:
Array([0] => foo [2] => -1)
7.
array_ map () 函数
作用:将回调函数作用到给定数组的单元上
语法:array_map ( callback callback, array arr1 [, array ...] )
注释:array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
例子:例子 1. array_map() 例子
这使得 $b 成为:
Array([0] => 1[1] => 8[2] => 27 [3] => 64 [4] => 125)

例子 2. array_map() - 使用更多的数组
上例将输出:
// printout of $c
Array([0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish)

// printout of $d
Array([0] => Array([1] => uno)[1] => Array([2] => dos)[2] => Array([3] => tres)[3] => Array([4] => cuatro)[4] => Array([5] => cinco))

通常使用了两个或更多数组时,它们的长度应该相同,因为回调函数是平行作用于相应的单元上的。如果数组的长度不同,则最短的一个将被用空的单元扩充。
本函数一个有趣的用法是构造一个数组的数组,这可以很容易的通过用 NULL 作为回调函数名来实现。
例子 3. 建立一个数组的数组

上例将输出:
Array([0] => Array([0] => 1[1] => one[2] => uno)[1] => Array([0] => 2[1] => two[2] => dos)[2] => Array([0] => 3[1] => three[2] => tres) [3] => Array([0] => 4[1] => four[2] => cuatro)[4] => Array([0] => 5[1] => five[2] => cinco))
8.
array_ flip () 函数
作用:交换数组中的键和值
语法:array_flip ( array trans )
注释:array_flip() 返回一个反转后的 array,例如 trans 中的键名变成了值,而 trans 中的值成了键名。
注意 trans 中的值需要能够作为合法的键名,例如需要是 integer 或者 string。如果值的类型不对将发出一个警告,并且有问题的键/值对将不会反转。
如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。array_flip() 如果失败返回 FALSE
例子:array_flip() 例子:冲突
现在 $trans 变成了:
Array([1] => b[2] => c)
9.
array_key_exists () 函数
作用:检查给定的键名或索引是否存在于数组中
语法:array_key_exists ( mixed key, array search )
注释:array_key_exists() 在给定的 key 存在于数组中时返回 TRUEkey 可以是任何能作为数组索引的值。array_key_exists() 也可用于对象。
例子:
10. array_ keys () 函数
作用:返回数组中所有的键名
语法:array_keys ( array input [, mixed search_value [, bool strict]] )
注释:array_keys() 返回 input 数组中的数字或者字符串的键名。
如果指定了可选参数 search_value,则只返回该值的键名。否则 input 数组中的所有键名都会被返回。自 PHP 5 起,可以用 strict 参数来进行全等比较(===)。
例子:array_keys() 例子
上例将输出:
Array([0] => 0 [1] => color)
Array([0] => 0 [1] => 3 [2] => 4)
Array([0] => color [1] => size)
11.
array_ values () 函数
作用:返回数组中所有的值
语法:array_values ( array input )
注释:array_values() 返回 input 数组中所有的值并给其建立数字索引。
例子:array_values() 例子
上例将输出:
Array([0] => XL [1] => gold )  
Array([0] => Array([0] => blue[1] => red[2] => green)
     [1] => Array([0] => small[1] => medium[2] => large))
12.
array_merge () 函数
作用:合并一个或多个数组
语法:array_merge ( array array1 [, array array2 [, array ...]] )
注释:array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
例子:array_merge() 例子
上例将输出:
Array([color] => green [0] => 2 [1] => 4[2] => a [3] => b[shape] => trapezoid [4] => 4)  
Array([color] => Array([favorite] => green [0] => blue)
   [0] => 5
     [1] => 10)
例子 2. 简单的 array_merge() 例子

别忘了数字键名将会被重新编号!
Array([0] => data)  
如果你想完全保留原有数组并只想新的数组附加到后面,用 + 运算符:
  1. <?php
  2. $array1 = array();
  3. $array2 = array(1 => "data");
  4. $result = $array1 + $array2;
  5. ?>  
数字键名将被保留从而原来的关联保持不变。
Array([1] => data)  

警告
array_merge() 的行为在 PHP 5 中被修改了。和 PHP 4 不同,array_merge() 现在只接受 array 类型的参数。不过可以用强制转换来合并其它类型。请看下面的例子。
例子 3. array_merge() PHP 5 例子
上例将输出:
Array([0] => foo [1] => bar)  
13.
array_merge_recursive () 函数
作用:递归地合并一个或多个数组
语法:array_merge_recursive ( array array1 [, array ...] )
注释:将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。
例子:array_merge_recursive() 例子

$result 成为:
Array(
    [color] => Array(
            [favorite] => Array([0] => red[1] => green)
            [0] => blue)
    [0] => 5
    [1] => 10
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值