處理數百份問卷的優先級排序資料(如 A>I>H>G>D...),目標是將這些定序資料轉換為可比較的量化分數,找出關鍵影響因子。本文分享一個實用的 PHP 統計方案。
假設問卷包含 10 項指標(A-J),受測者需按重要性排序。我們採用「名次遞減給分法」:第 1 名得 10 分、第 2 名得 9 分...第 10 名得 1 分。所有問卷的分數加總,即可得到各指標的相對重要性權重。
<?php
// 初始化 10 項指標分數陣列
$scores = array("A"=>0, "B"=>0, "C"=>0, "D"=>0, "E"=>0,
"F"=>0, "G"=>0, "H"=>0, "I"=>0, "J"=>0);
$handle = fopen('./file.txt', 'r');
while (!feof($handle)) {
$line = fgets($handle, 1024);
$len = strlen($line);
for ($i = 0; $i < $len; $i++) {
$char = strtoupper($line[$i]);
if (isset($scores[$char])) {
// 排名越前(索引越小)分數越高:總長度 - 當前索引
$scores[$char] += $len - $i;
}
}
}
fclose($handle);
// 依分數由高到低排序,保持鍵值關聯
arsort($scores);
var_dump($scores);
?>
fopen/fgets 處理大型文字檔,避免一次性載入佔用過多記憶體。strlen($string) - $i 確保第一位獲得最高分(如 10 字串長度,索引 0 得 10 分,索引 9 得 1 分)。strtoupper() 統一處理,增強資料容錯率。arsort() 依值降冪排序並保留鍵名,直接呈現重要性排名。file.txt 為純文字檔,每行代表一份問卷結果,格式如 ABCDEFGHIJ。作者提到資料錄入非手動完成,實務上建議改用線上問卷系統直接寫入資料庫,省去檔案轉換步驟並即時驗證資料格式。
這個輕量級方案非常適合中小規模問卷快速分析,幾行代碼即可將大量定序資料轉化為決策依據。