数组函数

2017-11-24  本文已影响0人  kotlin360

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 — 将数组中的所有键名修改为全大写或小写

<?php
    $input_array = array("FirSt" => 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 — 将一个数组分割成多个

<?php
    $input_array = array('a', 'b', 'c', 'd', 'e');
    print_r(array_chunk($input_array, 2));
    print_r(array_chunk($input_array, 2, true));
?>
以上例程会输出:
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
        )

)

3、array_column

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

<?php
    $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');
    print_r($first_names);
?>

以上例程会输出:

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

4、array_combine

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

<?php
    $a = array('green', 'red', 'yellow');
    $b = array('avocado', 'apple', 'banana');
    $c = array_combine($a, $b);
    print_r($c);
?>  

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

5、array_count_values

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

<?php
    $array = array(1, "hello", 1, "world", "hello");
    print_r(array_count_values($array));
?>
以上例程会输出:
Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)

6、array_fill_keys

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

<?php
    $keys = array('foo', 5, 10, 'bar');
    $a = array_fill_keys($keys, 'banana');
    print_r($a);
?>  
以上例程会输出:
Array
(
    [foo] => banana
    [5] => banana
    [10] => banana
    [bar] => banana
)

7、array_fill

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

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

8、array_filter

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

<?php
    function odd($var)
    {
        // returns whether the input integer is odd
        return($var & 1);
    }
    function even($var)
    {
        // returns whether the input integer is even
        return(!($var & 1));
    }
    $array1 = array("a"=>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 — 交换数组中的键和值

<?php
    $input = array("oranges", "apples", "pears");
    $flipped = array_flip($input);
    print_r($flipped);
?>

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

10、array_key_exists

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

<?php
    $search_array = array('first' => 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 — 返回数组中部分的或所有的键名

<?php
    $array = [0 => 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 — 为数组的每个元素应用回调函数

<?php
    function cube($n) {
        return($n * $n * $n);
    }

    $a = array(1, 2, 3, 4, 5);
    $b = array_map("cube", $a);
    print_r($b);
?> 
这使得 $b 成为:
Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

13、array_merge

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

<?php
    $array1 = ["color" => "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 — 递归地合并一个或多个数组

<?php
    $array1 = ['color' => ['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 — 对多个数组或多维数组进行排序

版本 说明
5.4.0 array1_sort_flags 增加 SORT_NATURAL 和 SORT_FLAG_CASE 选项
5.3.0 array1_sort_flags 增加选项 SORT_LOCALE_STRING
<?php
    $ar1 = [10, 100, 100, 0];
    $ar2 = [1, 3, 2, 4];
    array_multisort($ar1, $ar2);

    var_dump($ar1);
    var_dump($ar2);
    
    /**
        这个例子里,排序后,第一个数组会包含 0、 10、 100、 100。
        第二个数组会包含 4、1、 2、 3。
        第二个数组里的项目对应第一个数组后也进行了排序(100 和 100)
        array(4) {
            [0]=> 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 — 以指定长度将一个值填充进数组

<?php
    $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
?> 

17、array_pop

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

<?php
    $stack = ['orange', 'banana', 'apple', 'raspberry'];
    $fruit = array_pop($stack);
    print_r($stack);

    /**
    *   Array
    *   (
    *       [0] => orange
    *       [1] => banana
    *       [2] => apple
    *   )
    */
?> 

18、array_product

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

<?php
    $a = [2, 4, 6, 8];
    echo "product(a) = " . array_product($a) . "\n";
    echo "product(array()) = " . array_product(array()) . "\n";

    /**
    *   product(a) = 384
    *   product(array()) = 1
    */
?> 

19、array_push

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

<?php
    $array[] = $var;
?>  

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

<?php
    $stack = ['orange', 'banana'];
    array_push($stack, 'apple', 'raspberry');
    print_r($stack);

    /************************
     *
     *  Array
     *  (
     *      [0] => orange
     *      [1] => banana
     *      [2] => apple
     *      [3] => raspberry
     *  )
     *
    ***************************/
?> 

20、array_rand

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

版本 说明
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、

上一篇下一篇

猜你喜欢

热点阅读