我正在向另一个页面发送多个参数,并且我正在使用http_build_query()
来执行此操作。以下代码:
$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);
给我一个网址:
page2.php?pricefrom=10000&priceto=60000&model=1&model=2
您可以看到模型重复了多次,我希望第一个model
之后的参数为model2
,model3
.......等等。
我尝试将其放入for循环中
for ($i=0; $i <count($array) ; $i++) {
$args = array
(
'pricefrom' => $fromval,
'priceto' => $toval,
'model'.$i => $array
);
}
但这只是给了我:
page2.php?pricefrom=10000&priceto=60000&model1=1&model1=2
答案 0 :(得分:1)
您可以使用http_build_query
中的第二个参数为数字键加上字符串前缀:
avg_true = K.mean(y_true)
baseline = sigmoid_loss(avg_true, y_pred)
但是,我不建议为这样的变量创建单独的名称。最好使用alter session set current_schema = prod_schema;
。参见Passing arrays as url parameter
答案 1 :(得分:1)
您的原始代码没有任何问题,只是您通过调用preg_replace
破坏了代码。
if(!empty($_POST['modelcheck'])){
foreach($_POST['modelcheck'] as $selected){
$models[] = $selected;
}
}
$args = [
'pricefrom' => $fromval,
'priceto' => $toval,
'model' => $models,
];
$params = http_build_query($args);
header("Location: ../page2.php?" . $params);
现在,在page2.php
中,您仅使用$_GET['model']
作为数组。
<?php
foreach ($_GET['model'] as $model) {
printf('%s<br/>', $model);
}
答案 2 :(得分:-2)
您的$args
变量应类似于:
$args = array (
'pricefrom' => $fromval,
'priceto' => $toval,
'model' => $array
);
UPD
如果您想将preg_replace
与多个参数一起使用,请使用http_build_query
替换html特殊字符。
$query = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '[]=', http_build_query($args));
您将通过访问$_GET['model']