http_build_query 这个方法会把值为NULL的给干掉

昨天遇到了调用接口签名算法总报错的问题.但把参数拿到本地打接口又是正确的.

然后就排除了签名方式计算是正确的.只有一个不同的是,正式环境用的是curl 本地用的snoopy.排查了差不多2个小时.最终确定是传参中http_build_query 处理后参数丢了.为null的值都没了.然后查手册也没有提及到怎么保留值为null的参数.没办法,只有重新写拼参了.

       reset($data);
       while(list($key,$val) = each($data)) {
            if (is_array($val) || is_object($val)) {
                while (list($cur_key, $cur_val) = each($val)) {
                    $postdata .= urlencode($key)."[]=".urlencode($cur_val)."&";
                }
            } else
                $postdata .= urlencode($key)."=".urlencode($val)."&";
        }

借用了下snoopy里的拼参方式.

原文地址:https://www.cnblogs.com/shistou/p/3064142.html