PHP内置函数研究系列第八期,采用PHP函数http_build_query生成URL-encoded的查询字符串,开发过程中经常会出现这样一种情况,把大量的变量组装成一串请求链接,通用的方案是通过字符串与变量的组合生成查询字符串,如果链接很长很难维护,特别是一个搜索条件下的分页链接,条件可能更多,使用PHP内置函数http_build_query()可生成URL-encoded的查询字符串,实现把数组或对象转换成字符串,这里谈谈这个函数的用法与实例。
一,函数原型
string http_build_query ( array $formdata [, string $numeric_prefix [, string $arg_separator ]] )
二,兼容版本
PHP 5
三,基础用法与实例
1,把数组生成一个经过URL-encode的请求字符串
- <?php
- $data = array('k1'=>'value1', 'k2'=>'value2','k3'=>'value3','k4'=>'value4');
- echo http_build_query($data);
- ?>
输出:k1=value1&k2=value2&k3=value3&k4=value4
2,把二维数组生成一个请求字符串
- <?php
- $data = array(
- 'k1'=>array('kk1'=>'value1'),
- 'k2'=>array('kk2'=>'value2')
- );
- print_r(http_build_query($data));
- ?>
输出:k1%5Bkk1%5D=value1&k2%5Bkk2%5D=value2
把上面的输出转换为可读的字符如下
k1[kk1]=value1&k2[kk2]=value2
3,把对象属性生成一个请求字符串
- class ClassName {
- var $a;
- var $b;
- function ClassName()
- {
- $this->a = 'liu';
- $this->b = 'hui';
- }
- }
- $data = new ClassName();
- echo http_build_query($data);
输出:a=liu&b=hui
四,函数描述
使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串。参数 formdata 可以是数组或包含属性的对象。一个 formdata 数组可以是简单的一维结构,也可以是由数组组成的数组(其依次可以包含其它数组)。如果在基础数组中使用了数字下标同时给出了 numeric_prefix 参数,此参数值将会作为基础数组中的数字下标元素的前缀。这是为了让 PHP 或其它 CGI 程序在稍后对数据进行解码时获取合法的变量名。
这个函数在组装带有参数链接的情况下非常有用,可简化参数组装过程,提高代码的可读性与可维护性。具体请参考PHP手册,请关注下一期PHP内置函数研究系列。
http://cn.php.net/manual/en/function.http-build-query.php
实践是一个过程,记录是一种方式,无数个思考的点滴托起
