在程式設計中,你可能會遇到以多維數組來組織資料的需求。為了有效地管理複雜數據,必須根據特定標準對元素進行分組。本文解決了按特定列中的值對 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>
有多種方法可以實現此目的,但讓我們探索一個有效的解決方案:
將排序後的資料分組:
現在,迭代排序後的資料資料並建立一個臨時數組。對於每個條目,檢索“級別”值作為鍵並將整個條目儲存為值。這將有效地按級別對客戶記錄進行分組。
<code class="php">foreach ($data as $key => &$entry) { $level_arr[$entry['level']][$key] = $entry; }</code>
產生的 $level_arr 將具有所需的結構,每個層級包含一組客戶資訊。
轉換為 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>
透過執行下列步驟,您可以使用特定列值有效地將資料分組到 2D 陣列中,並建構一個用於增強資料操作和視覺化的 3D 陣列。這種方法在處理複雜的資料結構時提供了靈活性和效率。
以上是如何透過根據列值對元素進行分組來將 2D 數組轉換為 3D 數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!