一个关于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中数组方法仍需学习和习惯,经过前端迁就后端的方式能够实现大部分操做,但并非长久之计服务器

相关文章
相关标签/搜索