zoukankan      html  css  js  c++  java
  • PHP常用数组函数

    array_column

    返回数组中指定的一列

    array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) : array
    

    示例:

    $arr = [
        ['id' => 12, 'name' => 'paul', 'age' => 23],
        ['id' => 13, 'name' => 'itbsl', 'age' => 25],
        ['id' => 14, 'name' => 'jack', 'age' => 26]
    ];
    
    $result = array_column($arr, 'name');
    dump($result);
    

    输出:

    array(3) {
      [0] => string(4) "paul"
      [1] => string(5) "itbsl"
      [2] => string(4) "jack"
    }
    

    array_combine

    创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

    array_combine ( array $keys , array $values ) : array
    

    示例:

    $a = array('green', 'red', 'yellow');
    $b = array('avocado', 'apple', 'banana');
    $c = array_combine($a, $b);
    
    dump($c);
    

    输出:

    array(3) {
      ["green"] => string(7) "avocado"
      ["red"] => string(5) "apple"
      ["yellow"] => string(6) "banana"
    }
    

    array_count_values

    统计数组中所有的值在数组中出现的次数

    array_count_values ( array $array ) : array
    

    示例:

    $arr = [1, "hello", 1, "world", "hello"];
    $result = array_count_values($arr);
    dump($result);
    

    输出:

    array(3) {
      [1] => int(2)
      ["hello"] => int(2)
      ["world"] => int(1)
    }
    

    array_fill_keys

    使用指定的键和值填充数组

    array_fill_keys ( array $keys , mixed $value ) : array
    

    使用 value 参数的值作为值,使用 keys 数组的值作为键来填充一个数组。
    示例:

    $arr1  = ['id', 'name', 'age'];
    $value = 25;
    
    $result = array_fill_keys($arr1, $value);
    dump($result);
    

    输出:

    array(3) {
      ["id"] => int(25)
      ["name"] => int(25)
      ["age"] => int(25)
    }
    

    array_flip

    交换数组中的键和值

    array_flip ( array $array ) : array
    

    array_flip() 返回一个反转后的 array,例如 array 中的键名变成了值,而 array 中的值成了键名。
    如果同一个值出现多次,则最后一个键名将作为它的值,其它键会被丢弃。
    示例:

    $arr  = ['id' => 12, 'name' => 'itbsl', 'age' => 12];
    
    $result = array_flip($arr);
    dump($result);
    

    输出:

    array(2) {
      [12] => string(3) "age"
      ["itbsl"] => string(4) "name"
    }
    

    array_intersect

    计算数组的交集

    array_intersect ( array $array1 , array $array2 [, array $... ] ) : array
    

    示例:

    $arr1 = ['green', 'yellow', 'red', 2];
    $arr2 = ['blue', 'green', 2, 'red'];
    
    $result = array_intersect($arr1, $arr2);
    dump($result);
    

    输出:

    array(3) {
      [0] => string(5) "green"
      [2] => string(3) "red"
      [3] => int(2)
    }
    

    array_key_exists

    检查数组里是否有指定的键名或索引

    array_key_exists ( mixed $key , array $array ) : bool
    

    数组里有键 key 时,array_key_exists() 返回 TRUE。 key 可以是任何能作为数组索引的值。
    示例:

    $search_array = ['first' => 1, 'second' => 2];
    
    if (array_key_exists('first', $search_array)) {
        echo "The 'first' element is in the array";
    } else {
        echo "The 'first' element is not in the array";
    }
    

    输出:

    The 'first' element is in the array
    

    array_keys

    返回数组中部分的或所有的键名
    说明:

    array_keys ( array $array [, mixed $search_value = null [, bool $strict = false ]] ) : array
    

    如果指定了可选参数 search_value,则只返回该值的键名。否则 input 数组中的所有键名都会被返回。

    参数:
    $array
    一个数组,包含了要返回的键。
    $search_value
    如果指定了这个参数,只有包含这些值的键才会返回。
    $strict
    判断在搜索的时候是否该使用严格的比较(===)。

    示例:

    $arr1 = [0 => 100, 'color' => 'red'];
    dump(array_keys($arr1));
    
    $arr2 = ['blue', 'red', 'green', 'blue', 'blue'];
    dump(array_keys($arr2, 'blue'));
    
    $arr3 = [
        'color' => ['blue', 'red', 'green'],
        'size'  => ['small', 'medium', 'large']
    ];
    dump(array_keys($arr3));
    

    输出:

    array(2) {
      [0] => int(0)
      [1] => string(5) "color"
    }
    array(3) {
      [0] => int(0)
      [1] => int(3)
      [2] => int(4)
    }
    array(2) {
      [0] => string(5) "color"
      [1] => string(4) "size"
    }
    

    array_map

    为数组的每个元素应用回调函数

     array_map ( callable $callback , array $array1 [, array $... ] ) : array
    

    示例:

    $arr = ['green', 'blue', 'red', 'yellow'];
    $result = array_map('ucfirst', $arr);
    dump($result);
    

    输出:

    array(4) {
      [0] => string(5) "Green"
      [1] => string(4) "Blue"
      [2] => string(3) "Red"
      [3] => string(6) "Yellow"
    }
    

    array_merge

    合并一个或多个数组

    array_merge ( array $array1 [, array $... ] ) : array
    

    如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

    示例:

    $arr1 = [1, 2, 'name' => 'itbsl', 'age' => 12];
    $arr2 = [3, 4, 'name' => 'jack', 'hobby' => 'fishing', 'age' => 25];
    
    $result = array_merge($arr1, $arr2);
    dump($result);
    

    输出:

    array(7) {
      [0] => int(1)
      [1] => int(2)
      ["name"] => string(4) "jack"
      ["age"] => int(25)
      [2] => int(3)
      [3] => int(4)
      ["hobby"] => string(7) "fishing"
    }
    

    array_pop

    弹出数组最后一个单元(出栈)

    array_pop ( array &$array ) : mixed
    

    示例:

    $arr = [1, 2, 3, 4];
    array_pop($arr);
    
    dump($arr);
    

    输出:

    array(3) {
      [0] => int(1)
      [1] => int(2)
      [2] => int(3)
    }
    

    array_push

    将一个或多个单元压入数组的末尾(入栈)

    array_push ( array &$array , mixed $value1 [, mixed $... ] ) : int
    

    示例:

    $arr = [1, 2, 3];
    array_push($arr, 4, 5);
    
    dump($arr);
    

    输出:

    array(5) {
      [0] => int(1)
      [1] => int(2)
      [2] => int(3)
      [3] => int(4)
      [4] => int(5)
    }
    

    array_rand

    从数组中随机取出一个或多个单元

    array_rand ( array $array [, int $num = 1 ] ) : mixed
    

    从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键。 它使用了伪随机数产生算法,所以不适合密码学场景

    示例:

    $arr = ['green', 'blue', 'yellow', 'red', 'black'];
    
    dump(array_rand($arr));
    dump(array_rand($arr, 2));
    

    输出:

    int(4)
    array(2) {
      [0] => int(3)
      [1] => int(4)
    }
    

    array_reverse

    返回单元顺序相反的数组

    array_reverse ( array $array [, bool $preserve_keys = FALSE ] ) : array
    

    参数:
    $array
    输入的数组。

    $preserve_keys
    如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。
    示例:

    $arr = ['green', 'blue', 'yellow', 2];
    $result = array_reverse($arr);
    
    dump($result);
    

    在数组中搜索给定的值,如果成功则返回首个相应的键名

    array_search ( mixed $needle , array $haystack [, bool $strict = false ] ) : mixed
    

    大海捞针,在大海(haystack)中搜索针( needle 参数)。

    示例:

    $arr = ['id' => 12, 'name' => 'kevin', 'age' => 25];
    $result = array_search('kevin', $arr);
    
    dump($result);
    

    输出:

    string(4) "name"
    

    array_shift

    将数组开头的单元移出数组

    array_shift ( array &$array ) : mixed
    

    array_shift() 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。

    示例:

    $arr = [1, 2, 3, 4, 5];
    array_shift($arr);
    
    dump($arr);
    

    输出:

    array(4) {
      [0] => int(2)
      [1] => int(3)
      [2] => int(4)
      [3] => int(5)
    }
    

    array_slice

    从数组中取出一段

    array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] ) : array
    

    array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。
    示例:

    $arr = ['green', 'blue', 'yellow', 'red', 'black', 'pink'];
    $result = array_slice($arr, 1, 2);
    
    dump($result);
    

    输出:

    array(2) {
      [0] => string(4) "blue"
      [1] => string(6) "yellow"
    }
    

    array_sum

    对数组中所有值求和

    array_sum ( array $array ) : number
    

    array_sum() 将数组中的所有值相加,并返回结果。

    示例:

    $arr1 = [10, 20, 30];
    $arr2 = ['a' => 10, 'b' => 20, 'c', 'd' => 40];
    
    dump(array_sum($arr1));
    dump(array_sum($arr2));
    

    输出:

    int(60)
    int(70)
    

    array_unique

    移除数组中重复的值

    array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) : array
    

    参数:
    $array
    输入的数组。

    $sort_flags
    排序类型标记:

    • SORT_REGULAR - 按照通常方法比较(不修改类型)
    • SORT_NUMERIC - 按照数字形式比较
    • SORT_STRING - 按照字符串形式比较
    • SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。

    示例:

    $arr1 = [10, 20, 10, 30];
    
    dump(array_unique($arr1));
    

    输出:

    array(3) {
      [0] => int(10)
      [1] => int(20)
      [3] => int(30)
    }
    

    array_unshift

    在数组开头插入一个或多个单元

    array_unshift ( array &$array [, mixed $... ] ) : int
    

    array_unshift() 将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。

    示例:

    $arr = ['orange', 'banana'];
    array_unshift($arr, 'apple', 'strawberry');
    
    dump($arr);
    

    输出:

    array(4) {
      [0] => string(5) "apple"
      [1] => string(10) "strawberry"
      [2] => string(6) "orange"
      [3] => string(6) "banana"
    }
    

    array_values

    返回数组中所有的值

    array_values ( array $array ) : array
    

    示例:

    $arr = ['size' => 'XXL', 'color' => 'green'];
    
    dump(array_values($arr));
    

    输出:

    array(2) {
      [0] => string(3) "XXL"
      [1] => string(5) "green"
    }
    

    arsort

    对数组进行逆向排序并保持索引关系

    arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
    

    本函数对数组进行排序,数组的索引保持和单元的关联。
    主要用于对那些单元顺序很重要的结合数组进行排序。

    示例:

    $fruits = ['d' => 'lemon', 'a' => 'orange', 'b' => 'banana', 'c' => 'apple'];
    arsort($fruits);
    dump($fruits);
    
    $nums = [4, 2, 1, 9, 10, 7];
    arsort($nums);
    dump($nums);
    

    输出:

    array(4) {
      ["a"] => string(6) "orange"
      ["d"] => string(5) "lemon"
      ["b"] => string(6) "banana"
      ["c"] => string(5) "apple"
    }
    array(6) {
      [4] => int(10)
      [3] => int(9)
      [5] => int(7)
      [0] => int(4)
      [1] => int(2)
      [2] => int(1)
    }
    

    asort

    对数组进行排序并保持索引关系

    asort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
    

    本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。

    示例:

    $fruits = ['d' => 'lemon', 'a' => 'orange', 'b' => 'banana', 'c' => 'apple'];
    asort($fruits);
    dump($fruits);
    
    $nums = [4, 2, 1, 9, 10, 7];
    asort($nums);
    dump($nums);
    

    输出:

    array(4) {
      ["c"] => string(5) "apple"
      ["b"] => string(6) "banana"
      ["d"] => string(5) "lemon"
      ["a"] => string(6) "orange"
    }
    array(6) {
      [2] => int(1)
      [1] => int(2)
      [0] => int(4)
      [5] => int(7)
      [3] => int(9)
      [4] => int(10)
    }
    

    count

    计算数组中的单元数目,或对象中的属性个数

    count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] ) : int
    

    统计出数组里的所有元素的数量,或者对象里的东西。

    示例:

    $arr = [1, 2, 3, 4, 5];
    dump(count($arr));
    

    输出:

    int(5)
    

    in_array

    检查数组中是否存在某个值

    in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool
    

    示例:

    $arr = [1, 2, 3, 4, 5];
    dump(in_array(1, $arr));
    dump(in_array(10, $arr));
    

    输出:

    bool(true)
    bool(false)
    

    key_exists

    array_key_exists()的别名

    krsort

    对数组按照键名逆向排序

    krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
    

    对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组。

    示例:

    $arr = ['a' => 'apple', 'o' => 'orange', 's' => 'strawberry', 'b' => 'banana'];
    krsort($arr);
    
    dump($arr);
    

    输出:

    array(4) {
      ["s"] => string(10) "strawberry"
      ["o"] => string(6) "orange"
      ["b"] => string(6) "banana"
      ["a"] => string(5) "apple"
    }
    

    ksort

    对数组按照键名排序

    ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
    

    示例:

    $arr = ['a' => 'apple', 'o' => 'orange', 's' => 'strawberry', 'b' => 'banana'];
    ksort($arr);
    
    dump($arr);
    

    输出:

    array(4) {
      ["a"] => string(5) "apple"
      ["b"] => string(6) "banana"
      ["o"] => string(6) "orange"
      ["s"] => string(10) "strawberry"
    }
    

    list

    把数组中的值赋给一组变量

    list ( mixed $var1 [, mixed $... ] ) : array
    

    像 array() 一样,这不是真正的函数,而是语言结构。 list() 可以在单次操作内就为一组变量赋值。

    示例:

    $arr = ['coffee', 'brown', 'caffeine'];
    
    //列出所有变量
    list($drink, $color, $power) = $arr;
    
    echo "$drink is $color and $power makes it special.<br>";
    
    //列出他们其中的一个
    list(, , $power) = $arr;
    echo "I need $power.";
    

    输出:

    coffee is brown and caffeine makes it special.
    I need caffeine.
    

    rsort

    对数组逆向排序

    rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
    

    本函数对数组进行逆向排序(最高到最低)。

    示例:

    $arr = [1, 3, 2, 5, 10];
    rsort($arr);
    
    dump($arr);
    

    输出:

    array(5) {
      [0] => int(10)
      [1] => int(5)
      [2] => int(3)
      [3] => int(2)
      [4] => int(1)
    }
    

    sort

    对数组排序

    sort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
    

    本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。

    示例:

    $arr = [1, 3, 2, 5, 10];
    sort($arr);
    
    dump($arr);
    

    输出:

    array(5) {
      [0] => int(1)
      [1] => int(2)
      [2] => int(3)
      [3] => int(5)
      [4] => int(10)
    }
    

    shuffle

    打乱数组

    shuffle ( array &$array ) : bool
    

    本函数打乱(随机排列单元的顺序)一个数组。 它使用的是伪随机数产生器,并不适合密码学的场合。

    示例:

    $arr = [
        ['id' => 1, 'name' => 'paul', 'age' => 12],
        ['id' => 2, 'name' => 'jack', 'age' => 23],
        ['id' => 3, 'name' => 'jane', 'age' => 34],
        ['id' => 4, 'name' => 'lion', 'age' => 14],
    ];
    shuffle($arr);
    
    dump($arr);
    

    输出:

    array(4) {
      [0] => array(3) {
        ["id"] => int(2)
        ["name"] => string(4) "jack"
        ["age"] => int(23)
      }
      [1] => array(3) {
        ["id"] => int(1)
        ["name"] => string(4) "paul"
        ["age"] => int(12)
      }
      [2] => array(3) {
        ["id"] => int(4)
        ["name"] => string(4) "lion"
        ["age"] => int(14)
      }
      [3] => array(3) {
        ["id"] => int(3)
        ["name"] => string(4) "jane"
        ["age"] => int(34)
      }
    }
    

    usort

    使用用户自定义的比较函数对数组中的值进行排序

    usort ( array &$array , callable $value_compare_func ) : bool
    

    本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。

    示例:

    $arr = [
        ['id' => 1, 'name' => 'paul', 'age' => 12],
        ['id' => 2, 'name' => 'jack', 'age' => 23],
        ['id' => 3, 'name' => 'jane', 'age' => 34],
        ['id' => 4, 'name' => 'lion', 'age' => 14],
    ];
    
    //按照年龄从大到小排序
    function mySort($stu1, $stu2) {
        return $stu1['age'] < $stu2['age'];
    }
    
    usort($arr, 'mySort');
    
    dump($arr);
    

    输出:

    array(4) {
      [0] => array(3) {
        ["id"] => int(3)
        ["name"] => string(4) "jane"
        ["age"] => int(34)
      }
      [1] => array(3) {
        ["id"] => int(2)
        ["name"] => string(4) "jack"
        ["age"] => int(23)
      }
      [2] => array(3) {
        ["id"] => int(4)
        ["name"] => string(4) "lion"
        ["age"] => int(14)
      }
      [3] => array(3) {
        ["id"] => int(1)
        ["name"] => string(4) "paul"
        ["age"] => int(12)
      }
    }
    
  • 相关阅读:
    IOS之Block的应用-textFeild的回调应用
    KVC与KVO的不同
    git
    perl读取excel
    Linux用户管理
    Linux软件包的管理
    linux系统学习(二)
    linux系统学习(一)
    js模版渲染
    Discuz核心函数的解析
  • 原文地址:https://www.cnblogs.com/itbsl/p/10785548.html
Copyright © 2011-2022 走看看