Php 构建查询字符串链接

Php 构建查询字符串链接,php,arrays,get,query-string,filtering,Php,Arrays,Get,Query String,Filtering,我正在为我的搜索页面构建一个过滤器部分,我想知道执行查询字符串的最佳方式是什么。我的问题是,这些链接的功能非常类似于复选框,因此可以启用部分、全部或无。我必须循环浏览大约30个链接中的每一个,根据其状态删除或添加特定链接的值 我首先关注的是: 我应该像colors=红色、蓝色、绿色//爆炸一样传递数组吗 colors=red,blue,green //explode? 或 颜色[]=红色和颜色[]=蓝色和颜色[]=绿色//parse_str? 当我在每个链接中循环时,删除某个数组的某个值的最

我正在为我的搜索页面构建一个过滤器部分,我想知道执行查询字符串的最佳方式是什么。我的问题是,这些链接的功能非常类似于复选框,因此可以启用部分、全部或无。我必须循环浏览大约30个链接中的每一个,根据其状态删除或添加特定链接的值

我首先关注的是:

我应该像colors=红色、蓝色、绿色//爆炸一样传递数组吗

colors=red,blue,green //explode? 或


颜色[]=红色和颜色[]=蓝色和颜色[]=绿色//parse_str? 当我在每个链接中循环时,删除某个数组的某个值的最快/最佳方法是什么?我想使用我上面发布的第二种方法会有点复杂,是吗



编辑2-你觉得这个怎么样?

我在网上遇到了一个教程,并得出了以下结论:

function remove( $filters = array(), $remove_key = NULL, $remove_val = NULL ) { if( $remove_key != NULL && array_key_exists($remove_key,$filters) ) { if( $remove_val != NULL && array_key_exists($remove_val,array_flip($filters[$remove_key])) ) { $filters[$remove_key] = array_diff($filters[$remove_key],array($remove_val)); } else { unset($filters[$remove_key]); } } return http_build_query( $filters ); } 函数remove($filters=array(),$remove\u key=NULL,$remove\u val=NULL) { 如果($remove_key!=NULL&&array_key_存在($remove_key,$filters)) { 如果($remove_val!=NULL&&array_key_存在($remove_val,array_flip($filters[$remove_key])) { $filters[$remove_key]=数组差异($filters[$remove_key],数组($remove_val)); }否则{ 取消设置($filters[$remove_key]); } } 返回http\u build\u查询($filters); } 目前,我可以传递$remove_key来移除一个键,传递$remove_val来移除数组中键的值

你们觉得怎么样?这会不会太慢,做30-50链接?谢谢

 colors[]=red&colors[]=blue&colors[]=green 
将是表单提交数据的方式(当method=“get”时)。你可以通过$_GET['colors']访问它,这是本地的,而且可能是最快的方式

编辑:要通过
http\u build\u query
获取该字符串,只需将它们填入数组颜色即可

$data = array('colors' => array('green','red','blue'));
echo http_build_query($data); // colors[0]=green&colors[1]=red&colors[2]=blue

注意,在第二个示例中,您不必调用
parse_str
;PHP将使用数组填充
$\u GET['colors']
。+1:更不用说它不需要JavaScript来组装。而且它是最可移植的方法(因为所有浏览器都应该能够处理它)…当我使用http_build_query时,colors[]=red&colors[]=blue&colors[]=green将变成0=red&1=blue&2=green——我如何重建查询字符串?(或者甚至在重建之前删除一个值?@RS7我扩展了我的答案,我希望它能有所帮助:)我感谢到目前为止所有人的帮助;)我很难让系统在再次输出查询字符串之前快速/轻松地删除数组的一部分。我对所有这些都不熟悉,但是否有一个函数可以查找值并删除该数组项?我知道我可以取消设置($array['key']),但是值呢?对不起,我对这一切都很陌生。
$data = array('colors' => array('green','red','blue'));
echo http_build_query($data); // colors[0]=green&colors[1]=red&colors[2]=blue