當前位置: 首頁> 最新文章列表> 使用array_column 提取關聯數組的指定鍵值

使用array_column 提取關聯數組的指定鍵值

M66 2025-04-28

在PHP 中, array_column是一個非常有用的函數,可以從多維數組中提取某個特定列的值。這個函數對於處理關聯數組非常方便,尤其是在需要從數據集中過濾出某個鍵的值時。

array_column 函數的基本用法

array_column函數接受三個參數:

 array_column(array $input, mixed $column_key, mixed $index_key = null): array
  • $input :輸入的多維數組,通常是關聯數組。

  • $column_key :需要提取的列名或者列的鍵(可以是數組的索引)。

  • $index_key :可選的參數,用來指定結果數組中的鍵。如果不指定,默認情況下會使用數字索引。

示例1:從數組中提取某個特定鍵的值

假設我們有一個多維數組,每個元素表示一個用戶的相關信息,包含idnameemail字段,我們可以使用array_column提取出所有用戶的email地址:

 <?php
$users = [
    ['id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com'],
    ['id' => 2, 'name' => 'Bob', 'email' => 'bob@example.com'],
    ['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@example.com']
];

$emails = array_column($users, 'email');
print_r($emails);
?>

輸出:

 Array
(
    [0] => alice@example.com
    [1] => bob@example.com
    [2] => charlie@example.com
)

在這個例子中,我們提取了每個用戶的email字段。

示例2:使用index_key參數來重新索引

有時候我們希望在提取列時,可以使用某個鍵值作為返回數組的索引。例如,如果我們想要將用戶的id作為數組的鍵,而不是默認的數字索引,可以使用第三個參數$index_key來指定:

 <?php
$users = [
    ['id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com'],
    ['id' => 2, 'name' => 'Bob', 'email' => 'bob@example.com'],
    ['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@example.com']
];

$emails = array_column($users, 'email', 'id');
print_r($emails);
?>

輸出:

 Array
(
    [1] => alice@example.com
    [2] => bob@example.com
    [3] => charlie@example.com
)

此時,返回的數組以id作為鍵,而不是數字索引。

示例3:從多維數組中提取並修改URL

假設你從一個API 接口獲取了一個包含URL 的數據數組,但你需要統一將所有的域名替換為m66.net ,可以利用array_column結合array_map來實現這一需求:

 <?php
$products = [
    ['id' => 1, 'name' => 'Product A', 'url' => 'https://example.com/product-a'],
    ['id' => 2, 'name' => 'Product B', 'url' => 'https://example.com/product-b'],
    ['id' => 3, 'name' => 'Product C', 'url' => 'https://example.com/product-c']
];

// 提取所有 URL
$urls = array_column($products, 'url');

// 替換 URL 中的域名
$updatedUrls = array_map(function($url) {
    return preg_replace('/https:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);

print_r($updatedUrls);
?>

輸出:

 Array
(
    [0] => https://m66.net/product-a
    [1] => https://m66.net/product-b
    [2] => https://m66.net/product-c
)

通過array_map配合preg_replace函數,我們將所有的URL 域名替換成了m66.net

小結

  • array_column函數能夠從多維數組中提取特定列的值。

  • 你可以指定返回數組的鍵值,使用$index_key參數。

  • 結合array_mappreg_replace等函數,可以輕鬆處理和修改數據中的URL。

array_column是一個強大的工具,能夠幫助我們更高效地處理關聯數組中的數據,特別是在需要從復雜的數據結構中提取特定信息時。

正文與前面無關部分的分隔線: