PHP中常用的十個數組函數
in_array
【in_əˈrā】
檢查數組中是否存在某個值
<?php
@see https://www.php.net/manual/zh/function.in-array.php
// in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool
// 大海撈針,在大海(haystack)中搜索針( needle),如果沒有設置 strict 則使用寬鬆的比較。
$haystack = ['a', 'b', 'c', 'd'];
var_dump(in_array('a', $haystack));
// bool(true)
array_search
在數組中搜索給定的值,如果成功則返回首個相應的鍵名
<?php
@see https://www.php.net/manual/zh/function.array-search.php
// array_search ( mixed $needle , array $haystack [, bool $strict = false ] ) : mixed
// 大海撈針,在大海(haystack)中搜索針( needle),如果沒有設置 strict 則使用寬鬆的比較。
$haystack = ['a', 'b', 'c', 'd'];
var_dump(array_search('a', $haystack));
// int(0)
$haystack = ['a', 'b', 'c', 'd'];
var_dump(array_search('a', $haystack));
// bool(false)
array_key_exists
檢查數組裏是否有指定的鍵名或索引
<?php
@see https://www.php.net/manual/zh/function.array-key-exists.php
// array_key_exists ( mixed $key , array $array ) : bool
// 數組裏有鍵 key 時,array_key_exists() 返回 TRUE。 key 可以是任何能作爲數組索引的值。
$haystack = ['a', 'b', 'c', 'd'];
var_dump(array_key_exists(0, $haystack));
// bool(true)
$haystack = ['a', 'b', 'c', 'd'];
var_dump(array_key_exists(4, $haystack));
// bool(false)
$haystack = ['a'=>'aa', 'b'=>'bb', 'c'=>'cc', 'd'=>'dd'];
var_dump(array_key_exists('a', $haystack));
// bool(true)
array_values
返回數組中所有的值
<?php
@see https://www.php.net/manual/zh/function.array-key-exists.php
// array_values ( array $array ) : array
// array_values() 返回$array數組中所有的值並給其建立數字索引。
$haystack = ['a'=>'aa', 'b'=>'bb', 'c'=>'cc', 'd'=>'dd'];
var_dump(array_values($haystack));
Array
(
[0] => aa
[1] => bb
[2] => cc
[3] => dd
)
array_filter
用回調函數過濾數組中的單元
<?php
@see https://www.php.net/manual/zh/function.array-filter.php
array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array
array:要循環的數組
callback:使用的回調函數。
如果沒有提供 callback 函數, 將刪除 array 中所有等值爲 FALSE 的條目。更多信息見轉換爲布爾值。
flag:決定callback接收的參數形式:
ARRAY_FILTER_USE_KEY - callback接受鍵名作爲的唯一參數
ARRAY_FILTER_USE_BOTH - callback同時接受鍵名和鍵值
依次將 array 數組中的每個值傳遞到 callback 函數。如果 callback 函數返回 true,則 array 數組的當前值會被包含在返回的結果數組中。數組的鍵名保留不變。
function myfilter($item)
{
if ($item === 'bb')
{
return false;
}
return true;
}
$haystack = ['a'=>'aa', 'b'=>'bb', 'c'=>'cc', 'd'=>'dd'];
print_r(array_filter($haystack,'myfilter'));
Array
(
[a] => aa
[c] => cc
[d] => dd
)
array_column
返回數組中指定的一列
<?php
@see https://www.php.net/manual/zh/function.array-column.php
// array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) : array
// array_column() 返回input數組中鍵值爲column_key的列, 如果指定了可選參數index_key,那麼input數組中的這一列的值將作爲返回數組中對應值的鍵。
// 取出數組中的password列
$haystack = [
['user' => 'user1', 'password' => 'password1'],
['user' => 'user2', 'password' => 'password2'],
['user' => 'user3', 'password' => 'password3'],
['user' => 'user4', 'password' => 'password4'],
];
print_r(array_column($haystack,'password'));
Array
(
[0] => password1
[1] => password2
[2] => password3
[3] => password4
)
// 取出數組中的password列,並使用user列做爲key值。
print_r(array_column($haystack,'password'));
Array
(
[user1] => password1
[user2] => password2
[user3] => password3
[user4] => password4
)
array_merge
合併一個或多個數組
<?php
@see https://www.php.net/manual/zh/function.array-merge.php
// array_merge ( array $array1 [, array $... ] ) : array
// 如果數組中key相同,則value取最後一個相同key的value
$haystack_1 = ['user' => 'user1', 'password' => 'password1'];
$haystack_2 = ['user' => 'user2', 'email' => 'email2'];
print_r(array_merge($haystack_1, $haystack_2));
Array
(
[user] => user2
[password] => password1
[email] => email2
)
array_pop
彈出數組最後一個單元(出棧)
<?php
@see https://www.php.net/manual/zh/function.array-pop.php
// array_pop ( array &$array ) : mixed
// 彈出數組最後一個單元(出棧),傳遞的參數爲數組指針,返回值爲出棧元素。
$haystack = ['user' => 'user1', 'password' => 'password1'];
print_r(array_pop($haystack)); // password1
print_r($haystack);
(
[user] => user1
)
list
把數組中的值賦給一組變量
<?php
@see https://www.php.net/manual/zh/function.list.php
list ( mixed $var1 [, mixed $... ] ) : array
// 可以理解爲出棧,傳遞的參數爲數組指針,返回值爲出棧元素。
$haystack = ['user', 'password'];
list($u, $p) = $haystack;
echo $u.$p;
userpassword
ksort
對數組按照鍵名排序
<?php
@see https://www.php.net/manual/zh/function.ksort.php
ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
// 對數組按照鍵名排序,保留鍵名到數據的關聯。成功時返回 TRUE, 或者在失敗時返回 FALSE。
$haystack = [
'c'=>'value',
'a'=>'value',
'b'=>'value'
];
ksort($haystack);
print_r($haystack);
Array
(
[a] => value
[b] => value
[c] => value
)