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
)

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