如何形成具有多个值的参数字符串并检查是否为?或者&值是否需要?

时间:2011-12-16 03:25:34

标签: php

我有一个表单,通过下拉选择器提供了很多不同的选项。喜欢:

<!--// height //-->
<option value='3918'>5'7"</option>
<option value='3917'>5'8"</option>
<option value='3916'>5'9"</option>
<option value='3915'>5'10"</option>

<!--// weight //-->
<option value='3913'>101-120lbs</option>
<option value='3912'>121-140lbs</option>
<option value='3911'>141-160lbs</option>
<option value='3910'>161-180lbs</option>

我需要将这些数字与另一个允许从url参数中过滤的变量相关联。例如,我有一个如下的开关语句:

if (isset($form['height'])){
        $hv = $wizard['height'];
        $hvr = '4\'0"';
        $hvd = 0;
        switch ( $hv ) 
            {
            case 3915 : $hvd= 4294964526; $hvr = '5\'10"'; break;
            case 3916 : $hvd= 4294964528; $hvr = '5\'9"'; break;
            case 3917 : $hvd= 4294964529; $hvr = '5\'8"'; break;
            case 3918 : $hvd= 4294964406; $hvr = '5\'7"'; break;
            }
     }

if (isset($wizard['weight'])){
    $wv = $wizard['weight'];
    $wvr = '100 lbs';
    $wvd = 0;
    switch ( $wv ) 
    {
        case 3910 : $wvd = 4294964413; $wvr = '161-180 lbs'; break;
        case 3911 : $wvd = 4294964421; $wvr = '141-160 lbs'; break;
        case 3912 : $wvd = 4294964422; $wvr = '121-140 lbs'; break;
        case 3913 : $wvd = 4294964400; $wvr = '121-140 lbs'; break;
    }
}

在交换机中生成的变量需要在url参数的末尾附加。

因此,例如,提交5'7“150lb的正确网址将如下所示:

site.com?height=3918&weight=3911&d=4294964421,4294964406

现在我需要将这些传递给url参数,以便在提交表单时重定向到。

首先,我想我需要在每个if(isset)中构建该字符串?所以对于高度我会有

$this->getResponse()->setRedirect( "site.com?height=" . $hv ."&d=" . $hvd );

但是使用多个POST值构建这些字符串的最佳方法是什么?如何在参数中检查该值是否需要?&?如果有多个d值,我如何检查是否需要,

1 个答案:

答案 0 :(得分:0)

拥有一个包含查询字符串变量的数组。

$variables = array(); 

然后根据需要将变量添加到数组中。

$variables [] = "height=3918"; 
$variables [] = "weight=3911"; 

然后,要构建您的查询字符串,您可以使用implode&

与变量“粘合”在一起
$query_string = ''; 
if( count( $variables ) > 0 )
{
    $query_string .= '?'.implode('&', $variables);  
}