PHP常用數組函數列表

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章