首頁 > 後端開發 > php教程 > 如何透過根據列值對元素進行分組來將 2D 數組轉換為 3D 數組?

如何透過根據列值對元素進行分組來將 2D 數組轉換為 3D 數組?

Barbara Streisand
發布: 2024-10-28 20:05:31
原創
1085 人瀏覽過

How to Transform a 2D Array into a 3D Array by Grouping Elements Based on a Column Value?

根據列值將 2D 陣列資料分組,建立 3D 陣列

在程式設計中,你可能會遇到以多維數組來組織資料的需求。為了有效地管理複雜數據,必須根據特定標準對元素進行分組。本文解決了按特定列中的值對 2D 數組進行分組,並將其轉換為 3D 數組以增強視覺化和操作的具體挑戰。

考慮以下包含客戶資訊的多維數組:

<code class="php">$data = [
    ['cust' => 'XT8900', 'type' => 'standard', 'level' => 1],
    ['cust' => 'XT8944', 'type' => 'standard', 'level' => 1],
    ['cust' => 'XT8922', 'type' => 'premier', 'level' => 3],
    ['cust' => 'XT8816', 'type' => 'premier', 'level' => 3],
    ['cust' => 'XT7434', 'type' => 'standard', 'level' => 7],
];</code>
登入後複製

目標是根據「層級」列對這些客戶記錄進行分組,並建立3D 數組,其中每個層級都包含一組客戶資訊。所需的結果應如下所示:

<code class="php">$result = [
    1 => [
        ['cust' => 'XT8900', 'type' => 'standard'],
        ['cust' => 'XT8944', 'type' => 'standard'],
    ],
    3 => [
        ['cust' => 'XT8922', 'type' => 'premier'],
        ['cust' => 'XT8816', 'type' => 'premier'],
    ],
    7 => [
        ['cust' => 'XT7434', 'type' => 'standard'],
    ],
];</code>
登入後複製

有多種方法可以實現此目的,但讓我們探索一個有效的解決方案:

  1. 對資料進行排序:
    先按「層級」列對二維數組進行排序。這可以使用 usort() 函數比較每個元素的「等級」值來完成。
  2. 將排序後的資料分組:
    現在,迭代排序後的資料資料並建立一個臨時數組。對於每個條目,檢索“級別”值作為鍵並將整個條目儲存為值。這將有效地按級別對客戶記錄進行分組。

    <code class="php">foreach ($data as $key => &$entry) {
        $level_arr[$entry['level']][$key] = $entry;
    }</code>
    登入後複製

產生的 $level_arr 將具有所需的結構,每個層級包含一組客戶資訊。

  1. 轉換為 3D 陣列:
    現在,將臨時 $level_arr 轉換為目標 3D 陣列。這涉及將 3D 數組的鍵設為等級值,並將值設為 $level_arr 中相應的客戶數組。

    <code class="php">$result = [];
    foreach ($level_arr as $level => $customer_data) {
        $result[$level] = array_values($customer_data);
    }</code>
    登入後複製
  2. 最終結果:
    $result 變數現在是 3D 數組,其中客戶記錄按「level」列分組。

透過執行下列步驟,您可以使用特定列值有效地將資料分組到 2D 陣列中,並建構一個用於增強資料操作和視覺化的 3D 陣列。這種方法在處理複雜的資料結構時提供了靈活性和效率。

以上是如何透過根據列值對元素進行分組來將 2D 數組轉換為 3D 數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板