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

将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);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 multisim设计求解如图
  • ¥15 动态多目标优化,求解定义的问题的POF和POS公式
  • ¥30 实验 :UML2.0 行为建模
  • ¥15 设计一种优化调度算法并结合论文中的案例给出调度计划
  • ¥15 py文件打包exe报错TypeError:expected str,bytes or os.PathLike object,not_io.BytesIO
  • ¥15 Java编写学籍信息管理系统
  • ¥15 IPXE网刻客户机找不到服务端
  • ¥15 小贝360-4 配二个 华772S 设置WⅰFi5G 连接
  • ¥15 vs2022的QT报错,好像是缺少winextras
  • ¥15 怎么看 cst中一个面的功率分布图