我正在为我的搜索页面构建一个过滤器部分,我想知道执行查询字符串的最佳方法是什么。我的问题是这些链接的功能很像复选框,因此可以打开一些,全部或全部链接。我必须循环遍历大约30个左右的链接,根据其状态删除或添加特定链接的值。
我首先关注的是:
我应该通过像
colors=red,blue,green //explode?
这样的数组
或
colors[]=red&colors[]=blue&colors[]=green //parse_str?
当我遍历每个链接时,删除某个数组的某个值的最快/最佳方法是什么?我想使用上面发布的第二种方法会有点复杂,是吗?
EDIT2 - 你怎么看待这个?
我在网上遇到了一个教程并想出了这个:
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_key删除密钥,并删除$ remove_val以从数组中的键中删除值。
你们觉得怎么样?对于做30-50个链接,这会太慢吗?谢谢!
答案 0 :(得分:3)
colors[]=red&colors[]=blue&colors[]=green
表单将提交数据的方式(当method =“get”时)。你可以通过$ _GET ['colors']访问它,这是本机的,可能是最快的方式。
编辑:通过http_build_query
获取该字符串只需填充数组颜色
$data = array('colors' => array('green','red','blue'));
echo http_build_query($data); // colors[0]=green&colors[1]=red&colors[2]=blue