zoukankan      html  css  js  c++  java
  • php 多种输入参数完整性检查

    说明:(1)输入可能有多重类型的输入,即需要对输入参数进行多次匹配。

    (2)希望能够返回缺少的参数

    代码如下:

    /**
     * @param $param  输入参数 (get,post 参数)
     * @param $array  期望存在的参数,可以为多种比如 array(array('value1','value2'),('value2','value3','value4'))
     * @return bool | string 返回结果,如果参数检查符合要求,返回true,否则返回缺少的参数
     */
    function check($param, $array)
    {
        if (!empty($array) && is_string($array[0]))
        {
            $requires = array($array);
        }
        else
        {
            $requires = $array;
        }
    
        $return_key = true;
        $current_like_percentage = -1;    // 参数匹配度(初始值需要设置为一个不可能出现的值)
    
        foreach ($requires as $keys)
        {
            $current_key = true;
            $number = 0;
            foreach ($keys as $key)
            {
                if (!array_key_exists($key,$param))
                {
                    $number++;
                    $current_key = $key;
                }
            }
    
            $like_precentage = (count($keys) - $number) / (count($keys));    //计算输入参数在当前要求输入参数的匹配率
            if ($like_precentage === 1)
            {
                return true;    //完全匹配直接返回成功
            }
            else if ($like_precentage > $current_like_percentage)
            {
                $current_like_percentage = $like_precentage;
                $return_key = $current_key;
            }
    
        }
    
        return $return_key;
    }
  • 相关阅读:
    Python之实现一个优先级队列
    java可变参数列表的实现
    static 关键字详解 static方法调用非static属性和方法
    this关键字详解
    vue自定义事件 子组件把数据传出去
    vue组件 Prop传递数据
    Vue 什么是组件
    vue v-model 表单控件绑定
    vue v-on监听事件
    vue v-if with v-for
  • 原文地址:https://www.cnblogs.com/smallrookie/p/6794906.html
Copyright © 2011-2022 走看看