在PHP 中, array_column和array_filter函數是處理數組數據時非常有用的工具,尤其是在需要從一個二維數組中提取符合特定條件的指定列數據時。本文將介紹如何使用這兩個函數來完成此類操作。
array_column函數用於從一個多維數組中提取出某一列的值,並返回一個新數組。它的基本語法如下:
array_column(array $array, $column_key, $index_key = null): array
$array :輸入的多維數組。
$column_key :你要提取的列的鍵名。
$index_key (可選):如果提供此參數,返回的數組將會使用該鍵作為新數組的鍵。
舉個例子,假設我們有如下的二維數組:
$data = [
['id' => 1, 'name' => 'John', 'age' => 25],
['id' => 2, 'name' => 'Jane', 'age' => 30],
['id' => 3, 'name' => 'Joe', 'age' => 22],
];
我們可以通過array_column函數提取所有用戶的name列:
$names = array_column($data, 'name');
print_r($names);
輸出將會是:
Array
(
[0] => John
[1] => Jane
[2] => Joe
)
array_filter函數用於過濾數組中的元素,返回符合條件的元素。它的基本語法如下:
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$array :輸入的數組。
$callback :回調函數,用於過濾數組的條件。
$mode (可選):過濾的模式, ARRAY_FILTER_USE_KEY用於按鍵過濾, ARRAY_FILTER_USE_BOTH按鍵和值過濾,默認按值過濾。
假設我們希望從前面的數組中篩選出年齡大於24 歲的用戶,可以使用array_filter配合一個回調函數:
$filteredData = array_filter($data, function($person) {
return $person['age'] > 24;
});
print_r($filteredData);
輸出將會是:
Array
(
[1] => Array
(
[id] => 2
[name] => Jane
[age] => 30
)
[0] => Array
(
[id] => 1
[name] => John
[age] => 25
)
)
如果你想要結合array_column和array_filter來提取符合特定條件的指定列數據,可以先使用array_filter函數來過濾數組,然後再使用array_column函數提取相應的列。
舉個例子,假設我們需要找出所有年齡大於24 歲的用戶的name列:
$filteredNames = array_column(
array_filter($data, function($person) {
return $person['age'] > 24;
}),
'name'
);
print_r($filteredNames);
輸出將會是:
Array
(
[0] => John
[1] => Jane
)
這個例子展示瞭如何通過先過濾數據( array_filter )然後提取需要的列( array_column )來得到符合條件的數據。
如果你的數據來源是一個API 或網站的返回結果,通常返回的數據是一個包含多個元素的JSON 對象。例如,假設我們從https://api.m66.net/users獲取了用戶數據,並且我們只關心符合特定條件(如年齡大於24 歲)的用戶名字。你可以像這樣進行操作:
$url = "https://api.m66.net/users";
$response = file_get_contents($url);
$data = json_decode($response, true);
$filteredNames = array_column(
array_filter($data, function($person) {
return $person['age'] > 24;
}),
'name'
);
print_r($filteredNames);
在這個示例中,首先通過file_get_contents從m66.net獲取了用戶數據,然後使用array_filter來篩選年齡大於24 歲的用戶,最後通過array_column提取他們的name列。
通過array_column和array_filter函數的結合,你可以輕鬆地從復雜的二維數組中提取符合條件的特定列數據。這種方法對於處理API 返回的數據、數據庫查詢結果等非常有用,可以大大簡化數據處理的複雜度。