Php 基于isset的回声多参数发送

Php 基于isset的回声多参数发送,php,Php,我有一个分页代码,在没有设置过滤器的情况下工作得很好。然而,当我在我的页面上使用过滤器时,它会显示每一个产品,但在产品完成后,会显示无限数量的页面,而页面上什么也没有显示。我检查了如果我发送如下过滤器是否有效: if(isset($brand)){ echo " <a href='{$_SERVER['PHP_SELF'}}?currentpage=$nextpage&brand=$brand'>></a> " }else{ echo " &

我有一个分页代码,在没有设置过滤器的情况下工作得很好。然而,当我在我的页面上使用过滤器时,它会显示每一个产品,但在产品完成后,会显示无限数量的页面,而页面上什么也没有显示。我检查了如果我发送如下过滤器是否有效:

if(isset($brand)){
    echo " <a href='{$_SERVER['PHP_SELF'}}?currentpage=$nextpage&brand=$brand'>></a> "
}else{
    echo " <a href='{$_SERVER['PHP_SELF'}}?currentpage=$nextpage'>></a> 
}

所以我的问题是:是否有一种方法可以检查echo是否设置了过滤器并将它们全部发送到下一页(例如:品牌、颜色、大小等)。

使用
http\u build\u query
从值数组构建http查询字符串。在构建数组时,请使用null合并运算符以避免有关使用未定义变量的通知

$filter_array = [
    "currentpage" => $nextpage,
    "brand" => $brand ?? "",
    "color" => $color ?? "",
    "size"  => $size ?? "",
    // and the rest of your variables
];
$query = http_build_query($filter_array);

echo sprintf('<a href="%s?%s">&gt;</a>', $_SERVER["PHP_SELF"], $query);
$filter\u数组=[
“当前页面”=>下一页$,
“品牌”=>$brand???”,
“颜色”=>$color???”,
“大小”=>$size???”,
//还有其他的变量
];
$query=http\u build\u query($filter\u数组);
echo sprintf(“”,$\u服务器[“PHP\u SELF”],$query);

或者,对于不受支持的旧PHP版本:

$filter_array = [
    "currentpage" => $nextpage,
    "brand" => isset($brand) ? $brand : "",
    "color" => isset($color) ? $color : "",
    "size"  => isset($size) ? $size : "",
    // and the rest of your variables
];
$query = http_build_query($filter_array);

echo sprintf('<a href="%s?%s">&gt;</a>', $_SERVER["PHP_SELF"], $query);
$filter\u数组=[
“当前页面”=>下一页$,
“品牌”=>isset($brand)?$brand:”,
“颜色”=>isset($color)?$color:”,
“大小”=>isset($size)?$size:”,
//还有其他的变量
];
$query=http\u build\u query($filter\u数组);
echo sprintf(“”,$\u服务器[“PHP\u SELF”],$query);
这里有一个方法

首先将所有筛选器添加到数组中

$filters = array();
$filters['brand'] = $brand;
$filters['color'] = $color;
$filters['size'] = $size;
通过过滤器数组循环以生成参数字符串

$anchor_tag_params = "";
foreach($filters as $key => $value)
{
    $anchor_tag_params .= "&".$key."=".$value;
}
然后只需将params字符串附加到锚标记href

$anchor_tag_html = '<a href="'.$_SERVER['PHP_SELF'].'?currentpage='.$nextpage.$anchor_tag_params.'"></a>';
$anchor\u tag\u html='';

哦,我从来没有听说过这个,我应该在上面写些什么呢?你使用的是旧版本的PHP吗?这是自三年前7.0发布以来一直存在的。我使用的是7.2.8版本,您不会收到有关意外
的错误。它正在工作!非常感谢你,不仅是你帮了我,而且今晚我学到了一些很棒的东西!
$anchor_tag_html = '<a href="'.$_SERVER['PHP_SELF'].'?currentpage='.$nextpage.$anchor_tag_params.'"></a>';