数组函数

PHP数组函数,摘录于PHP手册

函数名称 解释
array_change_key_case 将数组中的所有键名修改为全大写或小写
array_chunk 将一个数组分割成多个
array_column 返回数组中指定的一列
array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
array_count_values 统计数组中所有的值
array_fill_keys 使用指定的键和值填充数组
array_fill 用给定的值填充数组
array_filter 用回调函数过滤数组中的单元
array_flip 交换数组中的键和值
array_key_exists 检查数组里是否有指定的键名或索引
array_keys 返回数组中部分的或所有的键名
array_map 为数组的每个元素应用回调函数
array_merge 合并一个或多个数组
array_merge_recursive 递归地合并一个或多个数组
array_multisort 对多个数组或多维数组进行排序
array_pad 以指定长度将一个值填充进数组
array_pop 弹出数组最后一个单元(出栈)
array_product 计算数组中所有值的乘积
array_push 将一个或多个单元压入数组的末尾(入栈)
array_rand 从数组中随机取出一个或多个单元
array_reduce 用回调函数迭代地将数组简化为单一的值
array_replace 使用传递的数组替换第一个数组的元素
array_replace_recursive 使用传递的数组递归替换第一个数组的元素
array_reverse 返回单元顺序相反的数组
array_search 在数组中搜索给定的值,如果成功则返回首个相应的键名
array_shift 将数组开头的单元移出数组
array_slice 从数组中取出一段
array_splice 去掉数组中的某一部分并用其它值取代
array_sum 对数组中所有值求和
array_udiff_assoc 带索引检查计算数组的差集,用回调函数比较数据
array_udiff_uassoc 带索引检查计算数组的差集,用回调函数比较数据和索引
array_udiff 用回调函数比较数据来计算数组的差集
array_unique 移除数组中重复的值
array_unshift 在数组开头插入一个或多个单元
array_values 返回数组中所有的值
array_walk 使用用户自定义函数对数组中的每个元素做回调处理
array_walk_recursive 对数组中的每个成员递归地应用用户函数
array 新建一个数组
arsort 对数组进行逆向排序并保持索引关系
asort 对数组进行排序并保持索引关系
compact 建立一个数组,包括变量名和它们的值
count 计算数组中的单元数目,或对象中的属性个数
current 返回数组中的当前单元
each 返回数组中当前的键/值对并将数组指针向前移动一步
end 将数组的内部指针指向最后一个单元
extract 从数组中将变量导入到当前的符号表
in_array 检查数组中是否存在某个值
key_exists 别名 array_key_exists
key 从关联数组中取得键名
krsort 对数组按照键名逆向排序
ksort 对数组按照键名排序
list 把数组中的值赋给一组变量
next 将数组中的内部指针向前移动一位
pos current 的别名
prev 将数组的内部指针倒回一位
range 根据范围创建数组,包含指定的元素
reset 将数组的内部指针指向第一个单元
rsort 对数组逆向排序
shuffle 打乱数组
sizeof count 的别名
sort 对数组排序
uasort 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
uksort 使用用户自定义的比较函数对数组中的键名进行排序
usort 使用用户自定义的比较函数对数组中的值进行排序

1、array_change_key_case

(PHP 4 >= 4.2.0, PHP 5, PHP 7)
array_change_key_case — 将数组中的所有键名修改为全大写或小写

  • 说明
    array array_change_key_case ( array $array [, int $case = CASE_LOWER ] )
    array_change_key_case() 将 array 数组中的所有键名改为全小写或大写。本函数不改变数字索引。
  • 参数
    array:需要操作的数组。
    case:可以在这里用两个常量,CASE_UPPER 或 CASE_LOWER(默认值)。
  • 返回值
    返回一个键全是小写或者全是大写的数组;如果输入值(array)不是一个数组,那么返回FALSE
  • 错误/异常
    如果输入值(array)不是一个数组,就会抛出一个错误警告(E_WARNING)
  • 范例
 1, "SecOnd" => 4);
    print_r(array_change_key_case($input_array, CASE_UPPER));
?>  
以上例程会输出:
Array
(
    [FIRST] => 1
    [SECOND] => 4
)

2、array_chunk

(PHP 4 >= 4.2.0, PHP 5, PHP 7)
array_chunk — 将一个数组分割成多个

  • 说明
    array array_chunk ( array $array , int $size [, bool $preserve_keys = false ] )
    将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size 个。
  • 参数
    array:需要操作的数组
    size:每个数组的单元数目
    preserve_keys:设为 TRUE,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE,那每个结果数组将用从零开始的新数字索引。默认值是 FALSE。
  • 返回值
    得到的数组是一个多维数组中的单元,其索引从零开始,每一维包含了 size 个元素。
  • 错误/异常
    如果 size 小于 1,会抛出一个 E_WARNING 错误并返回 NULL。
  • 范例

以上例程会输出:
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [2] => c
            [3] => d
        )

    [2] => Array
        (
            [4] => e
        )

)
  • 参见
    array_slice() - 从数组中取出一段

3、array_column

(PHP 5 >= 5.5.0, PHP 7)
array_column — 返回数组中指定的一列

  • 说明
    array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )
    array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。
  • 参数
    input
    需要取出数组列的多维数组。 如果提供的是包含一组对象的数组,只有 public 属性会被直接取出。 为了也能取出 private 和 protected 属性,类必须实现 __get() 和 __isset() 魔术方法。
    column_key
    需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键,也可以是属性名。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用)
    index_key
    作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。
  • 返回值
    从多维数组中返回单列数组。
  • 范例 从结果集中取出first names列
 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');
    print_r($first_names);
?>

以上例程会输出:

Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)

4、array_combine

(PHP 5, PHP 7)
array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

  • 说明
    array array_combine ( array $keys , array $values )
    返回一个 array,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。

  • 参数
    keys
    将被作为新数组的键。非法的值将会被转换为字符串类型(string)。
    values
    将被作为 Array 的值。

  • 返回值
    返回合并的 array,如果两个数组的单元数不同则返回 FALSE。

  • 错误/异常
    如果作为keys的数组和作为values的数组的元素个数不一样,将会抛出一个警告错误(E_WARNING)。

  • 范例 一个 array_combine() 简单的例子

  

以上例程会输出:
Array
(
    [green]  => avocado
    [red]    => apple
    [yellow] => banana
)

5、array_count_values

(PHP 4, PHP 5, PHP 7)
array_count_values — 统计数组中所有的值

  • 说明
    array array_count_values ( array $array )
    array_count_values() 返回一个数组: 数组的键是 array 里单元的值; 数组的值是 array 单元的值出现的次数。
  • 参数
    input
    统计这个数组的值
  • 返回值
    返回一个关联数组,用 array 数组中的值作为键名,该值在数组中出现的次数作为值。
  • 错误/异常
    对数组里面的每个不是 string 和 integer 类型的元素抛出一个警告错误(E_WARNING)。
  • 范例

以上例程会输出:
Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)

6、array_fill_keys

(PHP 5 >= 5.2.0, PHP 7)
array_fill_keys — 使用指定的键和值填充数组

  • 说明
    array array_fill_keys ( array $keys , mixed $value )
    使用 value 参数的值作为值,使用 keys 数组的值作为键来填充一个数组。
  • 参数
    keys:使用该数组的值作为键。非法值将被转换为字符串。
    value:填充使用的值。
  • 返回值
    返回填充后的数组。
  • 范例
  
以上例程会输出:
Array
(
    [foo] => banana
    [5] => banana
    [10] => banana
    [bar] => banana
)

7、array_fill

(PHP 4 >= 4.2.0, PHP 5, PHP 7)
array_fill — 用给定的值填充数组

  • 说明
    array array_fill ( int $start_index , int $num , mixed $value )
    array_fill() 用 value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。
  • 参数
    start_index:返回的数组的第一个索引值。 如果 start_index 是负数, 那么返回的数组的第一个索引将会是 start_index ,而后面索引则从0开始。 (参见 例子)。
    num:插入元素的数量。 必须大于或等于 0。
    value:用来填充的值。
  • 返回值
    返回填充后的数组。
  • 错误/异常
    如果 num 小于零,将会抛出 E_WARNING。
  • 说明
    5.6.0 num 现在可以是零。 之前 num 必须大于零。
  • 范例
  
以上例程会输出:
Array
(
    [5]  => banana
    [6]  => banana
    [7]  => banana
    [8]  => banana
    [9]  => banana
    [10] => banana
)
Array
(
    [-2] => pear
    [0] => pear
    [1] => pear
    [2] => pear
)

8、array_filter

(PHP 4 >= 4.0.6, PHP 5, PHP 7)
array_filter — 用回调函数过滤数组中的单元

  • 说明
    array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
    依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
  • 参数
    array:要循环的数组
    callback:使用的回调函数,如果没有提供 callback 函数, 将删除 array 中所有等值为 FALSE 的条目。更多信息见转换为布尔值。
    flag:决定callback接收的参数形式:

    ARRAY_FILTER_USE_KEY - callback接受键名作为的唯一参数
    ARRAY_FILTER_USE_BOTH - callback同时接受键名和键值

  • 返回值
    返回过滤后的数组。
  • 范例
1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
    $array2 = array(6, 7, 8, 9, 10, 11, 12);
    echo "Odd :\n";
    print_r(array_filter($array1, "odd"));
    echo "Even:\n";
    print_r(array_filter($array2, "even"));
?>

以上例程会输出:
Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

9、array_flip

(PHP 4, PHP 5, PHP 7)
array_flip — 交换数组中的键和值

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


以上例程会输出:
Array
(
    [oranges] => 0
    [apples] => 1
    [pears] => 2
)

10、array_key_exists

(PHP 4 >= 4.0.7, PHP 5, PHP 7)
array_key_exists — 检查数组里是否有指定的键名或索引

  • 说明
    bool array_key_exists ( mixed $key , array $array )
    数组里有键 key 时,array_key_exists() 返回 TRUE。 key 可以是任何能作为数组索引的值。
  • 参数
    key:要检查的键。
    array:一个数组,包含待检查的键。
  • 返回值
    成功时返回 TRUE, 或者在失败时返回 FALSE。
  • Note:
    array_key_exists() 仅仅搜索第一维的键。 多维数组里嵌套的键不会被搜索到。
  • 范例
 1, 'second' => 4);
    if (array_key_exists('first', $search_array)) {
        echo "The 'first' element is in the array";
    }
?>

11、array_keys

(PHP 4, PHP 5, PHP 7)
array_keys — 返回数组中部分的或所有的键名

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

    $array = ["blue", "red", "green", "blue", "blue"];
    print_r(array_keys($array, "blue"));

    $array = [
        "color" => ["blue", "red", "green"],
        "size"  => ["small", "medium", "large"]
    ];
    print_r(array_keys($array));
?>
以上例程会输出:
Array
(
    [0] => 0
    [1] => color
)
Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)
Array
(
    [0] => color
    [1] => size
)

12、array_map

(PHP 4 >= 4.0.6, PHP 5, PHP 7)
array_map — 为数组的每个元素应用回调函数

  • 说明
    array array_map ( callable $callback , array $array1 [, array $... ] )
    array_map():返回数组,是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。
  • 参数
    callback:回调函数,应用到每个数组里的每个元素。
    array1:数组,遍历运行 callback 函数。
    ...:数组列表,每个都遍历运行 callback 函数。
  • 返回值
    返回数组,包含 callback 函数处理之后 array1 的所有元素。
  • 范例
 
这使得 $b 成为:
Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

13、array_merge

(PHP 4, PHP 5, PHP 7)
array_merge — 合并一个或多个数组

  • 说明
    array array_merge ( array $array1 [, array $... ] )
    array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
    如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
    如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
  • 参数
    array1:要合并的第一个数组。
    ...:要合并的数组列表。
  • 返回值
    返回结果数组。
  • 范例
 "red", 2, 4];
    $array2 = ["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
)

14、array_merge_recursive

(PHP 4 >= 4.0.1, PHP 5, PHP 7)
array_merge_recursive — 递归地合并一个或多个数组

  • 说明
    array array_merge_recursive ( array $array1 [, array $... ] )
    array_merge_recursive() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
    如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。
  • 参数
    array1:要合并的初始数组。
    ...:数组变量列表,进行递归合并。
  • 返回值
    一个结果数组,其中的值合并自附加的参数。
  • 范例
 ['favorite'=>'red'], 5];
    $array2 = ['a','color' => ['favorite'=>'green','blue']];
    $result = array_merge_recursive($array1, $array2);
    print_r($result);
?>
以上例程会输出:
Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )       
            [0] => blue
        )                   
    [0] => 5
    [1] => a
)

15、array_multisort

(PHP 4, PHP 5, PHP 7)
array_multisort — 对多个数组或多维数组进行排序

  • 说明
    bool array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] )
    array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
    关联(string)键名保持不变,但数字键名会被重新索引。
    Note:
    If two members compare as equal, their relative order in the sorted array is undefined.
    如果两个成员相等,它们在排序数组中的相对顺序是未定义的。
  • 参数
    array1:要排序的 array。
    array1_sort_order:之前 array 参数要排列的顺序。 SORT_ASC 按照上升顺序排序, SORT_DESC 按照下降顺序排序。
    此参数可以和 array1_sort_flags 互换,也可以完全删除,默认是 SORT_ASC 。
    array1_sort_flags:为 array 参数设定选项:
    排序类型标志:
    ORT_REGULAR - 将项目按照通常方法比较(不修改类型)
    ORT_NUMERIC - 按照数字大小比较
    ORT_STRING - 按照字符串比较
    ORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。 它会使用 locale 信息,可以通过 setlocale() 修改此信息。
    ORT_NATURAL - 以字符串的"自然排序",类似 natsort()
    ORT_FLAG_CASE - 可以组合 (按位或 OR) SORT_STRING 或者 SORT_NATURAL 大小写不敏感的方式排序字符串。
    参数可以和 array1_sort_order 交换或者省略,默认情况下是 SORT_REGULAR。
    ...
    可选的选项,可提供更多数组,跟随在 sort order 和 sort flag 之后。 提供的数组和之前的数组要有相同数量的元素。 换言之,排序是按字典顺序排列的。
  • 返回值
    成功时返回 TRUE, 或者在失败时返回 FALSE
  • 更新日志
版本 说明
5.4.0 array1_sort_flags 增加 SORT_NATURAL 和 SORT_FLAG_CASE 选项
5.3.0 array1_sort_flags 增加选项 SORT_LOCALE_STRING
  • 范例
 int(0)
            [1]=> int(10)
            [2]=> int(100)
            [3]=> int(100)
        }
        array(4) {
            [0]=> int(4)
            [1]=> int(1)
            [2]=> int(2)
            [3]=> int(3)
        }
     */
?>

16、array_pad

(PHP 4, PHP 5, PHP 7)
array_pad — 以指定长度将一个值填充进数组

  • 说明
    array array_pad ( array $array , int $size , mixed $value )
    array_pad() 返回 array 的一个拷贝,并用 value 将其填补到 size 指定的长度。如果 size 为正,则填补到数组的右侧,如果为负则从左侧开始填补。如果 size 的绝对值小于或等于 array 数组的长度则没有任何填补。有可能一次最多填补 1048576 个单元。
  • 参数
    array:需要被填充的原始数组。
    size:新数组的长度。
    value:将被填充的值,只有在 array 的现有长度小于 size 的长度时才有效。
  • 返回值
    返回 array 用 value 填充到 size 指定的长度之后的一个副本。 如果 size 为正,则填补到数组的右侧,如果为负则从左侧开始填补。 如果 size 的绝对值小于或等于 array 数组的长度则没有任何填补。
  • 范例
 

17、array_pop

(PHP 4, PHP 5, PHP 7)
array_pop — 弹出数组最后一个单元(出栈)

  • 说明
    mixed array_pop ( array &$array )
    array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。
    Note: 使用此函数后会重置(reset())array 指针。
  • 参数
    array:需要做出栈的数组。
  • 返回值
    返回 array 的最后一个值。如果 array 是空(如果不是一个数组),将会返回 NULL 。
  • 错误/异常
    调用此函数去处理非数组的值,会产生 E_WARNING 级别的错误。
  • 范例
 orange
    *       [1] => banana
    *       [2] => apple
    *   )
    */
?> 

18、array_product

(PHP 5 >= 5.1.0, PHP 7)
array_product — 计算数组中所有值的乘积

  • 说明
    number array_product ( array $array )
    array_product() 以整数或浮点数返回一个数组中所有值的乘积。
  • 参数
    array:这个数组。
  • 返回值
    以整数或浮点数返回一个数组中所有值的乘积。
  • 更新日志
    5.3.6  空数组现在会产生 1,而之前此函数处理空数组会产生 0。
  • 范例
 

19、array_push

(PHP 4, PHP 5, PHP 7)
array_push — 将一个或多个单元压入数组的末尾(入栈)

  • 说明
    int array_push ( array &$array , mixed $value1 [, mixed $... ] )
    array_push() 将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。和如下效果相同:
  

并对每个传入的值重复以上动作。
Note: 如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
Note: 如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。

  • 参数
    array:输入的数组。
    value1:要压入 array 末尾的第一个值。
  • 返回值
    返回处理之后数组的元素个数。
  • 范例
 orange
     *      [1] => banana
     *      [2] => apple
     *      [3] => raspberry
     *  )
     *
    ***************************/
?> 

20、array_rand

(PHP 4, PHP 5, PHP 7)
array_rand — 从数组中随机取出一个或多个单元

  • 说明
    mixed array_rand ( array $array [, int $num = 1 ] )
    从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键。 它使用了伪随机数产生算法,所以不适合密码学场景,
  • 参数
    array:输入的数组。
    num:指明了你想取出多少个单元。
  • 返回值
    如果只取出一个,array_rand() 返回随机单元的键名。 否则就返回包含随机键名的数组。 完成后,就可以根据随机的键获取数组的随机值。 取出数量如果超过 array 的长度,就会导致 E_WARNING 错误,并返回 NULL。
  • 更新日志
版本 说明
7.1.0 内置的随机数生成算法从 libc rand 函数改成 梅森旋转 伪随机数生成算法。
5.2.10 The resulting array of keys is no longer shuffled.
  • 范例

21、

22、

23、

24、

25、

26、

27、

28、

29、

30、

31、

32、

33、

34、

35、

36、

37、

38、

39、

40、

41、

42、

43、

44、

45、

46、

47、

48、

49、

50、

你可能感兴趣的:(数组函数)