之前一直寫前端,入職新公司後,讓我開始管理後臺。做了幾天,不得不福氣,php 5是世界上第二好的語言。那第一呢?當然是php 7啦。
what
業務上需要做一個投票系統,有一步是需要確認得分,處於安全性的考慮,肯定是要放在後臺來做的。由於對php的陣列方法不太熟悉(題外話,對於我這個一開始上手js的人來說,php的陣列更像是js的array和object的混合體)。搞了半天,終於有了以下的程式碼。
how
先宣告下資料結構
1、前端提交的answer陣列
$answers = [
"1" => 1,
"2" => 2
];
2、後端從伺服器獲取的答案陣列
$questions = [
[
"id" => 1,
"value" => 1
],
[
"id" => 2,
"value" => 3
]
];
進入正片
js中,陣列的順序並不是固定的,在不同的環境下每個子項的順序不同,不知道php中是,但出於這種先入為主的概念,我對問題和答案的比較,做了一些校驗。
for($i=0;$i<count($questions) ; $i++) { //起手就是一個for迴圈,以$questions的長度來迴圈,避免$answer提交出錯
$key = $questions[$i][`id`]; // 設定key,從$questions中取出id作為key來查詢
$a = array_key_exists($key, $answers); //php中鍵名不區分型別
if($a && ($questions[$i][`value`] == $answers[$key])) { //如果$answer存在鍵值,再判斷是否兩個值相同,如果相同計數器加1
$count++;
}
}
print_r($count / count($questions) ); //計算百分比
心得
php中陣列方法仍需學習和習慣,通過前端遷就後端的方式可以實現大部分操作,但並不是長久之計