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 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)