PHP一个简单字符串拼接签名的方法(Join)

in PHP with 0 comment

经常有需求类似于:

第一步:设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
第二步:在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。

以往都是$k=$v&,最后再把末尾的&去掉,比较麻烦。无意间发现了有个join函数,用法如下:

/**
     * 获取签名
     * @param $params array 数组
     * @return string 拼接后的字符串MD5
     */
    public function getSign($params)
    {
        ksort($params);
        $str = [];
        foreach ($params as $k => $v){
            if (empty($v)) continue;
            $str[] = "{$k}={$v}";
        }
        return strtoupper(md5(join('&',$str)));
    }
Responses