在PHP中使用多维数组生成一个URL

时间:2017-08-29 09:45:10

标签: php arrays multidimensional-array

我有以下代码将数组转换为具有此格式的网址:$nopageurl = '/no/page/url?&value1=value2=&value3=&value4=';

foreach($_GET as $key => $value) {
    if(!in_array($key, array('page', 'a', 'sa', 'htaccess_key'))) {
        $nopageurl .= "{$key}={$value}&";
    }
}

但是,$ _GET数组的格式为:

Array
(
 [value1] => 0
 [value2] => Array
    (
        [0] => 3113
        [1] => 3114
    )

 [value3] =>2
 [value4] =>status
);

这会导致错误E_NOTICE: Array to string conversion。我该怎么做才能避免这个错误;

2 个答案:

答案 0 :(得分:2)

作为开发人员,您需要解决用户对INPUT的所有可能性。您可以限制输入,但是您需要对其进行验证(不允许使用子数组作为示例),或者您需要解决它们并找到针对这些特定情况的解决方案。

您需要考虑a参数也可以是数组的选项。 因此,只需添加一个条件来检查参数是否为数组,如果是,则根据需要进行处理。例如:

foreach($_GET as $key => $value) {
    if(!in_array($key, array('page', 'a', 'sa', 'htaccess_key'))) {
        if(is_array($key)){
           foreach($key as $k => $v){
             $nopageurl .= "{$key}[$k]={$v}&";
           }
        } else {
           $nopageurl .= "{$key}={$value}&";
        }
    }
}

答案 1 :(得分:0)

这是另一种有效的方法:

foreach($_GET as $key => $value) {
    if(!in_array($key, array('page', 'a', 'sa', 'htaccess_key'))) {
        if(is_array($value)){
            foreach($value as $k => $v){
                $nopageurl .= "{$key}[$k]={$v}&";
            }
        } else {
            $nopageurl .= "{$key}={$value}&";
        }
    }
}