构建查询字符串链接

时间:2010-10-19 13:48:28

标签: php arrays get query-string filtering

我正在为我的搜索页面构建一个过滤器部分,我想知道执行查询字符串的最佳方法是什么。我的问题是这些链接的功能很像复选框,因此可以打开一些,全部或全部链接。我必须循环遍历大约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个链接,这会太慢吗?谢谢!

1 个答案:

答案 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