如何形成一个参数字符串与多个值,并检查是否一个?或者,值所需要的


How do I form a parameter string with multiple values and check whether a ? or & is needed for the value?

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

<!--// 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参数过滤的变量相关联。例如,我有一个switch语句:

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提交的正确url应该是这样的:

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

现在我需要传递这些到一个url参数重定向到表单提交时。

那么首先我想我需要在每个单独的if(isset)中构建那个字符串?对于高度,我输入

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

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

设置一个数组来保存查询字符串变量。

$variables = array(); 

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

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

然后构造你的查询字符串,你可以使用内爆,它将与&"粘合"在一起的变量

$query_string = ''; 
if( count( $variables ) > 0 )
{
    $query_string .= '?'.implode('&', $variables);  
} 
相关文章: