dpziir0079 2019-06-07 15:05
浏览 173
已采纳

http_build_query给我获取相同名称的参数

I'm sending multiple parameters to another page, and I am using http_build_query() to do this. The following code:

$array = array();

if(!empty($_POST['modelcheck'])){
    foreach($_POST['modelcheck'] as $selected){
        $array[] = $selected;
    }
}

$args = array
(
    'pricefrom' => $fromval,
    'priceto' => $toval,
    'model' => $array
);
    $params = http_build_query($args);
    $cleanedParams = preg_replace('/%5B(\d+?)%5D/', '', $params);


header("Location: ../page2.php?" . $cleanedParams);

gives me a url:

page2.php?pricefrom=10000&priceto=60000&model=1&model=2

As you can see model is repeated multiple times, I would like the parameters following the first model to be model2, model3.......etc.

I've tried putting it in a for loop:

for ($i=0; $i <count($array) ; $i++) { 
    $args = array
    (
        'pricefrom' => $fromval,
        'priceto' => $toval,
        'model'.$i => $array
    );
}

but this just gives me :

page2.php?pricefrom=10000&priceto=60000&model1=1&model1=2
  • 写回答

3条回答 默认 最新

  • dongzhi2332 2019-06-07 15:08
    关注

    Your $args variable should look like:

    $args = array (
        'pricefrom' => $fromval,
        'priceto' => $toval,
        'model' => $array
    );
    

    UPD

    Use preg_replace for replace html special chars if you want to use http_build_query with multiple params.

    $query = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '[]=', http_build_query($args));
    

    You will receive an array by accessing to $_GET['model']

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开