當前位置: 首頁> 最新文章列表> 使用array_column 提取多維數組的多列

使用array_column 提取多維數組的多列

M66 2025-04-29

在PHP 中, array_column函數可以非常方便地從一個多維數組中提取特定的列數據。它常用於從關聯數組或多維數組中提取一個指定的列,以便後續處理。接下來,我們將深入探討如何使用array_column函數來提取多維數組中的多列數據。

1. 基本用法

array_column函數的基本語法如下:

 array_column(array $array, $column_key, $index_key = null): array
  • $array :輸入的多維數組。

  • $column_key :需要提取的列的鍵名。

  • $index_key :(可選)用作返回數組的鍵。如果不提供,返回的數組將是一個索引數組。

示例1:提取單列數據

首先,我們來看一個簡單的例子,展示如何從多維數組中提取單列數據:

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

$emails = array_column($data, 'email');

print_r($emails);
?>

輸出結果:

 Array
(
    [0] => alice@m66.net
    [1] => bob@m66.net
    [2] => charlie@m66.net
)

在這個例子中,我們使用array_column提取了email這一列。

2. 提取多列數據

array_column只能提取一列數據,但是如果你想提取多列數據,可以使用array_columnarray_map組合來實現。下面是一個例子,展示瞭如何提取多個列:

示例2:提取多列數據

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

$namesAndEmails = array_map(function($item) {
    return [
        'name'  => $item['name'],
        'email' => $item['email'],
    ];
}, $data);

print_r($namesAndEmails);
?>

輸出結果:

 Array
(
    [0] => Array
        (
            [name] => Alice
            [email] => alice@m66.net
        )
    [1] => Array
        (
            [name] => Bob
            [email] => bob@m66.net
        )
    [2] => Array
        (
            [name] => Charlie
            [email] => charlie@m66.net
        )
)

在這個例子中,我們使用了array_map函數將nameemail列提取到一個新的數組中。

3. 使用array_column提取多列數據

如果你希望通過array_column提取多個列數據,通常可以結合array_column與一些其他函數一起使用。例如,如果你只關心一個列並且需要其他數據進行關聯操作,下面是一個更複雜的例子。

示例3:從多維數組中提取並重組數據

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

$names = array_column($data, 'name');
$emails = array_column($data, 'email');

// 合併兩個數組
$merged = array_map(null, $names, $emails);

print_r($merged);
?>

輸出結果:

 Array
(
    [0] => Array
        (
            [0] => Alice
            [1] => alice@m66.net
        )
    [1] => Array
        (
            [0] => Bob
            [1] => bob@m66.net
        )
    [2] => Array
        (
            [0] => Charlie
            [1] => charlie@m66.net
        )
)

在這個例子中,我們使用array_column提取了nameemail列,接著通過array_map函數將它們合併為一個二維數組。

4. 總結

  • array_column是一個非常強大的工具,可以幫助你輕鬆提取數組中的某一列數據。

  • 對於多列的提取,雖然array_column只能處理單列,但你可以通過組合其他函數,如array_map ,來實現提取多列的需求。

  • array_column的效率較高,特別是在處理大規模數據時,它比手動循環更高效。

通過合理地使用array_column和其他數組函數,你可以更高效地處理PHP 中的多維數組數據。