PHP常用数组函数列表

Deadly 提交于 2020-03-04 07:50:20

PHP常用的数组函数

  • is_array(mixed $var):bool, 检测变量是否为数组, 返回Ture/False。

    <?php
    $num = 1;
    $nums = ['1', '2'];
    var_dump(is_array($num));
    var_dump(is_array($nums));
    
  • explode(string $delimiter, string $string [, int $limit]): array使用分隔符$delimiter分隔字符串$string

    • 如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。
    • 如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。
    • 如果 limit 是 0,则会被当做 1。
    <?php
    $ids = '1,2,3,4,5,6';
    $arr1 = explode(',', $ids);
    $arr2 = explode(',', $ids, 3);
    print_r($arr1);
    print_r($arr2);
    
  • implode(string $glue, array $pieces):string, 指定分隔符$glue将数组$pieces中的值拼接起来,返回一个字符串。

    <?php
    $arr = [1, 2, 3, 4, 5];
    
    $s1 = implode('', $arr);
    $s2 = implode(',', $arr);
    echo $s1 . PHP_EOL . $s2 . PHP_EOL;
    
    
  • array_change_key_case(array $array [int $case=CASE_LOWER]):array: 将数组中的所有键名修改为全大写或全小写, 默认转为小写,返回一个新数组。

    <?php
    
    $arr = [
        'name' => 'zhangsang',
        'Age' => 10,
    ];
    
    $arr = array_change_key_case($arr, CASE_LOWER);  // 改为小写
    print_r($arr);
    $arr = array_change_key_case($arr, CASE_UPPER); // 改为大写
    print_r($arr);
    
  • array_chunk(array $array, int $size [, bool $preserve_keys = false]):array:将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size 个。

    <?php
    $array = [1, 2, 3, 4, 5 ,6 ,7];
    $result = array_chunk($array, 3);
    print_r($result);
    $result = array_chunk($array, 2, true);
    print_r($result);
    
  • array_column(array $input, mixed $column_key [, mixed $index_key=null]):array返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。

    <?php
    $stu = [
        [
            'id' => 1,
            'name' => '衣服'
        ],
        [
            'id' => 2,
            'name' => '鞋子'
        ]
    ];
    
    $id_list = array_column($stu, 'id');
    print_r($id_list);
    
    
  • array_combine(array $keys, array $vals): array:用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值, 返回一个新数组。

    <?php
    $keys = ['name', 'age'];
    $vals = ['张三', 10];
    
    $user = array_combine($keys, $vals);
    print_r($user);
    
  • array_count_values(array $array): array: 返回一个关联数组,用 array 数组中的值作为键名,该值在数组中出现的次数作为值。

    <?php
    
    $array = ['1', '2', '1', '2', '3'];
    print_r(array_count_values($array));
    
  • array_fill_keys(array $keys, mixed $value): array: 使用 value 参数的值作为值,使用 keys 数组的值作为键来填充一个数组。

    <?php
    
    $arr = ['1', '3', '5', '7'];
    print_r(array_fill_keys($arr, '0'));
    
  • array_filter(array $array [, callable $callback[, int $flag=0]]):array:依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

    <?php
    
    $arr = [1, 2, 3, 4, 5, 6, 7, 8];
    
    $callback = function ($val) { // 保留单数数字
        return $val % 2 == 0 ? false : true;
    };
    $res = array_filter($arr, $callback);
    print_r($res);
    
    
  • array_flip(array $array):array: 反转数组中的键和值。

    <?php
    
    $arr = [
        'name' => 'classmate',
        'age'  => 10
    ];
    
    print_r(array_flip($arr));
    
  • array_key_exists(mixed $key, array $array): bool:数组里有键 key 时,array_key_exists() 返回 TRUEkey 可以是任何能作为数组索引的值。

    <?php
    
    $stu = [
        'name' => 'classmate',
        'age'  => 20
    ];
    
    var_dump(array_key_exists('name', $stu));
    var_dump(array_key_exists('val', $stu));
    
  • array_keys(array $array [,mixed $search_value=null, [bool $strict=false]]): array:返回数组中的键名,$search_value表示只有包含了该值的键才会返回,$strict表示严格模式,只有值类型和值相同才返回。

    <?php
    
    $stu = [
        'a1' => 20,
        'a2' => 30,
        'a3' => 20,
        'a4' => '20'
    ];
    var_dump(array_keys($stu));
    var_dump(array_keys($stu, 20));
    var_dump(array_keys($stu, 20, true));
    
  • array_map(callabe $callback, array $array1[, array $...]):array: 为数组中的每个元素调用一次callback函数, callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。

    <?php
    
    $arr = [1, 2, 3, 4, 5];
    $arr2 = [6, 7, 8, 9, 10];
    
    // 单个数组
    $func1 = function ($val){
        return $val * $val;
    };
    print_r(array_map($func1, $arr));
    
    
    // 多个数组
    $func2 = function ($n, $m){
        return $n * $m;
    };
    print_r(array_map($func2, $arr, $arr2));
    
    
  • array_merge_recursive(array $array1[, array $...]):array递归的合并一个或多个数组,一个数组中的值附加在前一个数组的后面,返回作为结果的数组

    <?php
    
    $arr = [1, 2, 3, 4, 5];
    $arr2 = [6, 7, 8, 9, 10];
    print_r(array_merge_recursive($arr));
    print_r(array_merge_recursive($arr, $arr2));
    
  • array_merge(array $array[, array $...]):array:递归的合并一个数组中的值附加在前一个数组的后面,返回作为结果的数组。

    <?php
    
    $arr = [1, 2, 3, 4, 5];
    $arr2 = [6, 7, 8, 9, 10];
    print_r(array_merge($arr));
    print_r(array_merge($arr, $arr2));
    
  • array_multisort: 对多个数组或者多维数组进行排序。

    <?php
    
    // 多个数组升序排序
    $arr1 = [2,3,4,1];
    $arr2 = [5, 8, 7, 6];
    array_multisort($arr1, $arr2);
    print_r($arr1);
    print_r($arr2);
    
    
    // 多维数组降序排序
    $data = [
        [
            'id' => 2,
            'name' => '张三'
        ],
        [
            'id' => 1,
            'name' => '李四'
        ],
        [
            'id' => 3,
            'name' => '王五'
        ]
    ];
    
    array_multisort(array_column($data, 'id'), SORT_DESC, array_column($data, 'name'), $data);
    print_r($data);
    
  • array_pop(array &$array):mixed: 弹出并返回数组的最后一个元素(出栈)。

    <?php
    $arr = [1, 2, 3, 4, 5, 6];
    $val = array_pop($arr);
    echo $val.PHP_EOL;
    print_r($arr);
    
  • array_push(array &$array, mixed $value1 [, mixed $... ] ):int:array_push()array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。

    <?php
    $arr = [1, 2, 3, 4, 5, 6];
    print_r($arr);
    array_push($arr, 7, 8, 9);
    print_r($arr);
    
  • array_rand(array $array(, in $num=1)):mixed: 从数组中随机取一个或者多个单元。

    <?php
    $arr = [1, 2, 3, 4, 5, 6];
    print_r(array_rand($arr, 1));
    echo PHP_EOL;
    print_r(array_rand($arr, 2));
    
  • array_reduce(array $array, callable $callback [, mixed $initial]):mixed:用回调函数迭代地将数组简化为单一的值。

    <?php
    $arr = [1, 2, 3, 4, 5];
    
    // 求和
    $sum = function ($carry, $item){
        // $carry为上次迭代后的结构,如果本次迭代是第一次,那么这个值是 initial。
        return $carry + $item;
    };
    
    var_dump(array_reduce($arr, $sum));
    var_dump(array_reduce($arr, $sum, 10)); // 10为指定第一迭代的initial值.
    
  • array_reverse ( array $array, [bool $preserve_keys=false]):接受数组array 作为输入并返回一个单元为相反顺序的新数组。preserve_keys如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。

    <?php
    $arr = [1, 2, 3, 4, 5];
    print_r(array_reverse($arr));
    
  • array_search:在数组中搜索给定的值,搜索成功返回首个相应的健名。

    <?php
    $arr = [1, 2, 3, 4, 5];
    print_r(array_search(4, $arr));
    print_r(array_search(6, $arr));
    
  • array_shift(array $array):mixed:将数组的第一元素移除,并将其作为结果返回。

    <?php
    $arr = [1, 2, 3, 4];
    print_r(array_shift($arr));
    print_r($arr);
    
  • array_sum(array $array):number: 对数组中所有值进行求和。

    <?php
    $arr = [1, 2, 3, 4];
    print_r(array_sum($arr));
    
  • array_unique(array $array [, int $sort_flags = SORT_STRING]):移除数组中的重复元素:

    <?php
    $arr = [1, 2, 2,2,2,3];
    print_r(array_unique($arr));
    
  • array_unshift(array &$array [, mixed $...]):int:在数组开头插入一个或多个元素。

    <?php
    $arr = [4];
    array_unshift($arr, 1, 2, 3);
    print_r($arr);
    
  • array_values(array $array): array:返回数组中所有的值。

    <?php
    $arr = [
        'name' => '张三',
        'age' => 20
    ];
    
    print_r(array_values($arr));
    
  • array_walk(array &$array, callable $callback[, mixed $userdata]):将用户子自定义函数作用于数组中的每个元素。

    <?php
    $arr = [
        [
            'id' => 1,
            'status'=>1,
        ],
        [
            'id' => 2,
            'status' => 1,
        ]
    ];
    
    // 将status改为0
    array_walk($arr, function (&$val){
        $val['status'] = 0;
    });
    
    print_r($arr);
    
  • asortarsort分别对数组进行升序丶降序排序。

    <?php
    $arr = [5, 4, 6, 2, 1];
    asort($arr);  // 升序排序
    print_r($arr);
    
    arsort($arr);
    print_r($arr);
    
  • compact(mixed $varname1 [, mixed $...]):array:创建一个包含变量与其值的数组。

    对每个参数,compact() 在当前的符号表中查找该变量名并将它添加到输出的数组中,变量名成为键名而变量的内容成为该键的值, 在 PHP 7.3 之前版本,未设置的字符串会被静默忽略, 否则抛异常。

    <?php
    $name = '张三';
    $age = 40;
    
    $result = compact('name', 'age', 'card');
    print_r($result);
    
  • shuffle(array &$array): bool:打乱数组。

    <?php
    $arr = [1, 2, 3, 4, 5];
    shuffle($arr);
    print_r($arr);
    

参考PHP官方文档

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!