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() 返回TRUE
。key
可以是任何能作爲數組索引的值。<?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);
-
asort
丶arsort
分別對數組進行升序丶降序排序。<?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官方文檔。