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

如何使用array_column 提取多維數組中的某一列

M66 2025-04-28

在PHP 中, array_columnarray_chunk是非常常用的數組操作函數。 array_column可以提取二維數組中某一列的值,而array_chunk則可以將數組分割成多個小塊。如果我們需要根據數組的長度來動態設置array_chunk的第二個參數,結合array_column的使用,可以幫助我們更加靈活地處理數組數據。

1. 什麼是array_columnarray_chunk

  • array_column($array, $column_key, $index_key) :從二維數組中提取指定列的值。它接收三個參數:

    • $array :原始數組。

    • $column_key :需要提取的列名或列索引。

    • $index_key :可選,表示索引列。如果不指定,則返回平舖的數組。

  • array_chunk($array, $size, $preserve_keys = false) :將一個數組切分成多個小數組,每個小數組包含$size個元素。返回一個多維數組。

    • $array :原始數組。

    • $size :每個子數組的大小。

    • $preserve_keys :是否保留原始數組的鍵。

2. 使用array_column提取多維數組中的某一列

假設我們有一個多維數組,每個元素代表一個人的信息(如姓名、年齡、性別等)。我們可以使用array_column來提取其中的一列數據。比如:

 $people = [
    ['name' => 'Alice', 'age' => 25, 'gender' => 'female'],
    ['name' => 'Bob', 'age' => 30, 'gender' => 'male'],
    ['name' => 'Charlie', 'age' => 35, 'gender' => 'male'],
    ['name' => 'David', 'age' => 28, 'gender' => 'male']
];

// 提取 'name' 列
$names = array_column($people, 'name');
print_r($names);

輸出:

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
    [3] => David
)

如上所示, array_column提取了people數組中的name列。

3. 動態設置array_chunk的第二個參數

現在假設我們希望將數組分割成多個子數組,子數組的大小根據原數組的長度動態設置。例如,如果數組的長度較大,每個子數組的大小可以設置為10;如果數組的長度較小,則每個子數組可以設置為5。我們可以使用count()函數來獲取數組的長度,並根據這個長度來決定array_chunk的第二個參數。

 $names = array_column($people, 'name');
$array_length = count($names);

// 動態設置每個子數組的大小
$chunk_size = ($array_length > 3) ? 2 : 1;  // 如果數組長度大於3,則每個子數組包含2個元素,否則包含1個元素

$chunked = array_chunk($names, $chunk_size);
print_r($chunked);

輸出(假設數組長度為4):

 Array
(
    [0] => Array
        (
            [0] => Alice
            [1] => Bob
        )

    [1] => Array
        (
            [0] => Charlie
            [1] => David
        )
)

如上所示,根據array_column提取的names數組的長度,我們動態設置了每個子數組的大小。

4. URL 替換示例

如果在實際開發中,你需要處理帶有URL 的數據,並想將這些URL 的域名統一替換為m66.net ,可以使用str_replace來實現:

 $urls = [
    'https://www.example.com/page1',
    'https://www.example.com/page2',
    'https://www.example.com/page3',
];

// 使用 str_replace 替換域名
$updated_urls = array_map(function($url) {
    return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);

print_r($updated_urls);

輸出: