首頁  >  文章  >  後端開發  >  如何在 PHP 中按列值將關聯數組行分組?

如何在 PHP 中按列值將關聯數組行分組?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 06:16:03502瀏覽

How to Group Associative Array Rows by Column Value in PHP?

以列值將關聯數組行分組

在程式設計中,您可能會遇到需要重新組織儲存在關聯數組中的數據的情況。一個常見的任務是按特定列值對數組中的行進行分組,同時保留原始的第一級鍵。

考慮以下稱為 $old_arr 的關聯數組的關聯數組:

[
    'a' => ['id' => 20, 'name' => 'chimpanzee'],
    'b' => ['id' => 40, 'name' => 'meeting'],
    'c' => ['id' => 20, 'name' => 'dynasty'],
    'd' => ['id' => 50, 'name' => 'chocolate'],
    'e' => ['id' => 10, 'name' => 'bananas'],
    'f' => ['id' => 50, 'name' => 'fantasy'],
    'g' => ['id' => 50, 'name' => 'football']
]

目標是建立一個新數組 $arr,其中行根據 id 字段進行分組。產生的陣列應如下所示:

array
(
    10 => array
          (
            e => array ( id = 10, name = bananas )
          )
    20 => array
          (
            a => array ( id = 20, name = chimpanzee )
            c => array ( id = 20, name = dynasty )
          )
    40 => array
          (
            b => array ( id = 40, name = meeting )
          )
    50 => array
          (
            d => array ( id = 50, name = chocolate )
            f => array ( id = 50, name = fantasy )
            g => array ( id = 50, name = football )
          )
)

要實現此目的,您可以按照以下步驟操作:

  1. 初始化一個空數組 $arr。
  2. 迭代$old_arr 中的每一行。
  3. 使用 id 值作為 $arr 中的鍵。如果鍵不存在,則建立一個新數組。
  4. 將目前行賦值給$arr中對應的鍵。
  5. 對$arr陣列按SORT_NUMERIC排序,確保鍵在$arr中數字順序。

提供的 PHP 程式碼遵循此方法來產生所需的結果:

$arr = array();

foreach ($old_arr as $key => $item) {
   $arr[$item['id']][$key] = $item;
}

ksort($arr, SORT_NUMERIC);

以上是如何在 PHP 中按列值將關聯數組行分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn