一個關於php兩個數組compare實踐

以前一直寫前端,入職新公司後,讓我開始管理後臺。作了幾天,不得不福氣,php 5是世界上第二好的語言。那第一呢?固然是php 7啦。php

what

業務上須要作一個投票系統,有一步是須要確認得分,處於安全性的考慮,確定是要放在後臺來作的。因爲對php的數組方法不太熟悉(題外話,對於我這個一開始上手js的人來講,php的數組更像是js的array和object的混合體)。搞了半天,終於有了如下的代碼。前端

how

先聲明下數據結構

一、前端提交的answer數組後端

$answers = [
      "1" => 1,
      "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中數組方法仍需學習和習慣,經過前端遷就後端的方式能夠實現大部分操做,但並非長久之計服務器

相關文章
相關標籤/搜索