【发布时间】:2010-10-19 13:48:27
【问题描述】:
我正在为我的搜索页面构建一个过滤器部分,我想知道执行查询字符串的最佳方法是什么。我的问题是这些链接的功能很像复选框,所以可以打开一些、全部或没有。我必须遍历大约 30 个左右的链接中的每一个,根据其状态删除或添加该特定链接的值。
我首先关心的是:
我应该像
这样传递数组吗colors=red,blue,green //爆炸?
或
colors[]=red&colors[]=blue&colors[]=green //parse_str?
当我遍历每个链接时,删除某个数组的某个值的最快/最佳方法是什么?我想使用我上面发布的第二种方法会更复杂一些,是吗?
EDIT2 - 您对此有何看法?
我在网上遇到了一个教程并想出了这个:
功能删除($filters = 数组(),$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)); } 别的 { 未设置($filters[$remove_key]); } } 返回 http_build_query( $filters ); }目前,我可以通过 $remove_key 来删除一个键,并通过 $remove_val 来从数组中的一个键中删除一个值。
你们怎么看?对于做 30-50 个链接来说,这会不会太慢?谢谢!
【问题讨论】:
-
请注意,在第二个示例中,您不必致电
parse_str; PHP 将为您填充一个数组$_GET['colors']。
标签: php arrays get query-string filtering