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;
}

 

posted @ 2017-05-02 10:24  talk_is_cheap  阅读(994)  评论(0编辑  收藏  举报