欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP常用数组函数列表

程序员文章站 2022-03-03 17:20:36
...

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官方文档

相关标签: php