PHP查询字符串的技巧分享
这篇文章主要介绍“PHP查询字符串的技巧分享”,在日常操作中,相信很多人在PHP查询字符串的技巧分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP查询字符串的技巧分享”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
RL传递变量对于程序员来说已经是司空见惯的事情,很多人会因此认为本文毫无新意。我们把通过URL传递变量的方式称作GET方式,另外一种是POST方式。这两种方式在PHP中都非常容易实现。举个例子,假设准备进行数据库查询,需要通过GET传递三个变量:city、id和paid。
传统的PHP查询字符串方法是象下面的例子那样构造查询字符串:
$city_name = "new york";
$invoice_id = 3456;
$paid = 1;
$query_string = "city={$city_name}
&id={$invoice_id}&paid={$paid}";$url = "http://www.example.com?" .
$query_string;
如今大部分PHP开发者都已经习惯于上面这种方法。它在只有三四个变量的时候毫无问题,但是再增加变量的话,代码
将变得难以理解和维护,并容易引入细微的错误。
传递GET变量的***方式是通过PHP5中引入的http_build_query函数,它接收一个数组参数,返回一个格式正确、经过
URL编码的字符串,可以直接拼接在url中。下面是相应的PHP查询字符串例子。
$city_name = "new york";
$invoice_id = 3456;
$paid = 1;
$fields = array('city' =>
$city_name,
'id' => $invoice_id,
'paid' => $paid);
$url = "http://www.example.com?" .
http_build_query($fields, '', "&");
在上面这个PHP查询字符串例子中,数组包含了变量名和变量值。你也可以传入只含变量值的数组,函数会使用你提供的变量名(通
过函数的第二个参数传入)加上数组的索引值构造变量名。比如说你要传递六个城市名,可以象下面这么做。
$fields = array('paris',
'new york',
'florence',
'london',
'berlin',
'delhi');
$url = "http:/
/www.example.php?" .
http_build_query($fields,
'city', "&");
产生的url如下:
http://www.example.php/?city0=paris&city1=new+york&city2=florence&city3=london&city4=berlin&city5=delhi
(译注:如果数组元素的key不是默认的整数,那么key就作为对应值的变量名,而象上面例子,数组的key是默认的整数,那么
变量名是函数第二个参数加上元素的key,所以***个变量名就是city0)
PHP查询字符串函数的第三个参数是可选参数,表示变量的分隔符,默认值是‘&’。不过我更喜欢显式的传入这个‘&’分隔符。
此外还可以传入一个复杂的数组:
$city_name = "new york";
$invoice_id = 3456;
$currency_name = "euro";
$total = 345;
$receipt_no = "fgf44545";
$fields = array('city' =>
$city_name,
'id' => $invoice_id,
'paid' => array('currency' =>
$currency_name,
'amount' => $total,
'receipt' => $receipt_no)
);
$url = "http://www.example.php?" .
http_build_query($fields, '', "&");
它将生成以下URL:
http://www.example.com?city=new+york&id=3456&paid%5Bcurrency%5D=euro&paid%5Bamount%5D=345&paid%5Breceipt%
5D=fgf44545
总而言之,http_build_query()确实可以简化GET进行PHP查询字符串的构造。
到此,关于“PHP查询字符串的技巧分享”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341