unset()从数组到内部循环?

时间:2010-09-01 10:56:22

标签: php

我正在制作一个分页剧本。作为其中的一部分,它将需要重建查询字符串,减去$_GET['page']

这是选项1:

#reconstruct the GETs minus $_GET['page']
$vars = $_GET;
unset($vars['page']);
$queryString = '';
foreach ($vars as $k=>$v){
    $queryString .= '&'.$k.'='.$v;
}

这是选项2:

$vars = $_GET;
$queryString = '';
foreach ($vars as $k=>$v){
    if ($k !== 'page'){
        $queryString .= '&'.$k.'='.$v;
    }
}

在速度或良好做法方面,一个比另一个好吗?据推测,unset会稍微快一点,因为它会在找到它想要的内容时停止,而另一个会在每个循环中执行if吗?

此外,在初始化$queryString时,是否有理由选择NULL而不是空字符串,或者它对任何内容都没有区别?

2 个答案:

答案 0 :(得分:2)

不要。使用http_build_query()

  

从提供的关联(或索引)数组生成URL编码的查询字符串。

使用这种小型循环时,速度考虑绝对没有意义。代码可读性高于一切!

NULL与空字符串完全相同,因此您可以尝试使用哪一个字符串。

答案 1 :(得分:2)

您也可以使用http_build_query()功能。尝试这样的事情:

$vars = $_GET;
unset($vars ['page']);
$queryString = http_build_query($vars , '', '&');