首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 陣列實戰技巧:統計鍵值出現次數、重組鍵值結構與陣列合併

     編輯:PHP 相關知識

情境:學習記錄資料處理

原始資料結構:

$array = array(
    0 => array(
        'id' => '2', 'lessonid' => '200', 'userid' => '6038',
        'username' => 'jsc11101', 'lessontitle' => 'Module1-Unit2 I\'m From China', 'courseid' => '4'
    ),
    1 => array(
        'id' => '3', 'lessonid' => '201', 'userid' => '6038',
        'username' => 'jsc11101', 'lessontitle' => 'Module2-Unit1 I Can Speak English', 'courseid' => '4'
    ),
    // ... 更多筆資料
);

需求 1:統計相同 lessonid 的學習次數

$study_num = array();
foreach ($array as $value) {
    $lessonid = $value['lessonid'];
    $study_num[$lessonid] = (empty($study_num[$lessonid]) ? 0 : $study_num[$lessonid]) + 1;
}
// 取用:$study_num[$lessonid]

使用三元運算子處理首次出現時的初始化。

需求 2:以 lessonid 為鍵重組陣列

$lessonid_array = array();
foreach ($array as $key => $value) {
    $lessonid_array[$value['lessonid']] = $value;
}
// 取用:$lessonid_array[$lessonid]['lessontitle']

需求 3:合併統計結果至重組陣列

foreach ($study_num as $key => $value) {
    $lessonid_array[$key]['count'] = $value;
}

最終輸出結構

$a_array = array(
    '200' => array(
        'id' => '2', 'lessonid' => '200', 'userid' => '6038',
        'username' => 'jsc11101', 'lessontitle' => 'Module1-Unit2 I\'m From China',
        'courseid' => '4', 'count' => '學習次數'
    ),
    '201' => array( ... ),
    // ...
);

進階建議

  • 使用 array_column() (PHP 5.5+) 快速提取欄位:array_column($array, 'lessonid')
  • 統計次數可用 array_count_values():array_count_values(array_column($array, 'lessonid'))
  • 重組陣列可用 array_combine() 搭配 array_column()
  • 大量資料建議改用資料庫 GROUP BY 統計,減少記憶體佔用

摘自 xiaxia0083的專欄

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved