dongyikong6207 2019-03-13 20:36
浏览 1888
已采纳

将url参数添加到带有分隔逗号问题的$ _GET变量中

This is my function, I simply want to output a link like this:

www.example.com/new?cat=22,23,27

If a category value already exists I want to delete it. If it doesn't exist yet, i want to add it.

This is my function:

function setorunset($value) {
    if(isset($_GET['cat'])) { //wenn schon eine categorie da ist
        if(strpos($value,$_GET['cat']) === false ) { 
            $_GET['cat'] .= ",".$value; }
        else {
            str_replace(",".$value, ",", $_GET['cat']);
        }
        echo http_build_query($_GET);   
    }
    else {
        echo http_build_query($_GET).'&cat='.$value;
    }
}

I simply can't find the error why this shouldnt work: I call this function with: setorunset(22);

Does anyone find any error?

  • 写回答

1条回答 默认 最新

  • douang2297 2019-03-13 20:43
    关注

    Don't use strpos() for this. If you have cat=101,11 and you call setorunset(10) it will match the 10 in 101.

    Instead, use explode() to create an array from the value, update the array, and then use implode() to create the new value.

    function setorunset($value) {
        if(isset($_GET['cat'])) { //wenn schon eine categorie da ist
            $cat = explode(',', $_GET['cat']);
            $pos = array_search($value, $cat);
            if ($pos === false) {
                $cat[] = $value;
            } else {
                unset($cat[$pos]);
            }
            $_GET['cat'] = implode(',', $cat);
        }
        else {
            $_GET['cat'] = $value;
        }
        echo http_build_query($_GET);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 同步两个不同结果的array中某些属性
  • ¥15 悬赏15远程操控解决问题
  • ¥15 CST复制的模型无法单独修改参数?
  • ¥15 前端页面想做个定时任务,但是使用requestAnimationFrame,setinterval和settimeout都不行
  • ¥15 根据以下文字信息,做EA模型图
  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热