猿问

php URL $_GET 累加上去?

想問一下
我想讓網址get能夠累加上去
比如說現在的網址是

region=abc&status=1

當我可能進入另一個網址後
我想讓他在後面加上 &xxx=1
但是不會洗掉前面的GET參數

region=abc&status=1&xxx=1

無論前面有多少GET參數都會加上去,但重複的就不加
這樣我就不需要再網址那邊重新定義有幾個GET參數了
只要網址上沒有相同的參數就累加上去
這個有什麼代碼可以做到?

補充
但如果網址沒有任何參數 此時要加參數時
它能自動判別,也就是說變成

xxx.php?xxx=xxx

而不是&
除非前面已經有?了則會是&

桃花长相依
浏览 657回答 4
4回答

慕哥6287543

你可以试试这个 $url = 'xxx.php?xxx=xxx'; $params = [ 'region' => 'abc', 'status' => 1 ]; $urlParams = http_build_query($params); if(strpos($url, '?')){ echo $url.$urlParams; }else{ echo $url.'?'.$urlParams; }

三国纷争

你好这个问题很简单:1)一般这种需求用在商品列表条件筛选的业务上面比如:鞋 我想选择红色,42号2)使用js先获取当前的url,然后直接拼接到上面就可以了代码如下:var host = window.location.href; //获取urlwindow.location.href = url+ "/xxx/1"; //拼接url解决问题

撒科打诨

http_build_query

GCT1015

// 先来一个也是在当前网站上看到的函数 function parse_url(url) { var a = document.createElement('a'); a.href = url; return { source:url, protocol:a.protocol.replace(':', ''), host:a.hostname, port:a.port, query:a.search, params:(function(){ var ret = {}, seg = a.search.replace(/^\?/, '').split('&'), len = seg.length, i = 0, s; for(;i<len;i++) { if(!seg[i]) { continue; } s = seg[i].split('='); ret[s[0]] = s[1]; } return ret; })(), file:(a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1], hash:a.hash.replace('#', ''), path:a.pathname.replace(/^([^\/])/, '/$1'), segments:a.pathname.replace(/^\//, '').split('/') }; } 通过js将所有链接添加点击事件 事件中通过parse_url解析当前页面地址及目标页面地址 合并解析后两地址的请求参数 拼接最终跳转地址 阻止默认行为 如果要通过php的话, 那得通过函数来生成链接 解析目标链接 合并参数 返回最终访问链接
随时随地看视频慕课网APP
我要回答