我有以下代码将数组转换为具有此格式的网址:$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
。我该怎么做才能避免这个错误;
答案 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}&";
}
}
}