帮助PHP和关联数组

时间:2010-06-02 22:07:26

标签: php arrays associative-array calculator

我必须根据用户的输入和选择字段中的选择在php中做一个简单的计算器,如下所示:

<?php
$a = $_GET['a'];
$b = $_GET['b'];

$array = array( "option1" => 0.1,
                    "option2" => 0.15,
                    "option3" => 0.3,
                    "option4" => 3,
                    "option5" => 3,
                    "option6" => 16,
                    "option7" => 16,
                    "option8" => 16
                    );

echo "<form action='calc.php' method='get'>";
echo "<input type='text' name='a' value='".$a."'> of ";
echo "<select name='b'>";
foreach ($array as $k => $v) {
    echo "<option value='".$v."'>".$k."</option>";
}
echo "</select> ";
echo "<input type='submit' value='='> ";

$total_volume = $a * $b;

echo $total_volume;

echo "</form>";
?>

好吧,现在一切正常,但想法是在用户提交表单后,页面重新加载输入字段中的已发送金额和用户实际选择的选定选项...

首先很简单:我只是将value="a"放在我的输入字段中,但我不确定如何在<select>字段中选择选项???

我从这开始:

foreach ($array as $k => $v) {
        echo "<option value='".$v."'";
        if ($b == $v) {
            echo " selected ";
        }
        echo ">".$k."</option>";
    }

......但这显然不能按预期工作......请帮我解决这个问题:)

谢谢!

3 个答案:

答案 0 :(得分:2)

您需要回复'selected="selected"'之类的内容。其余的代码对我来说似乎很好。

第二个想法由于多个选项返回相同的值,因此存在结构上的错误,因此在提交表单后无法选择正确的值。

您需要在循环中的select中发送$k值作为计算,您只需使用$array[$b]代替$b

<?php
$a = $_GET['a'];
$b = $_GET['b'];

$array = array( "option1" => 0.1,
                    "option2" => 0.15,
                    "option3" => 0.3,
                    "option4" => 3,
                    "option5" => 3,
                    "option6" => 16,
                    "option7" => 16,
                    "option8" => 16
                    );

echo "<form action='calc.php' method='get'>";
echo "<input type='text' name='a' value='".$a."'> of ";
echo "<select name='b'>";
foreach ($array as $k => $v) {
        echo "<option value='".$k."'";
        if ($b == $k) {
            echo ' selected="selected"';
        }
        echo ">".$k."</option>";     // or $v if you want to show the number
}
echo "</select> ";
echo "<input type='submit' value='='> ";

$total_volume = $a * $array[$b];

echo $total_volume;

echo "</form>";
?>

答案 1 :(得分:2)

试试这个:

foreach ($array as $k => $v) {
   $selected= ($b == $v) ? 'selected="selected"' : '';
   echo "<option value='$v' $selected>$k</option>\n";
}

答案 2 :(得分:-1)

你必须在$ _GET中捕获数据。 试试

foreach ($_GET as $k => $v) {
        echo "<option value='".$v."'";
        if ($b == $v) {
            echo " selected ";
        }
        echo ">".$k."</option>";
    }

编辑:

在我的电脑上,它在这里工作是GET的转储

        <form action='' method='get'>
    <input type='text' name='a' value='121'> of <select name='b'>
<option value='0.1'>option1</option>
<option value='0.15'>option2</option>
<option value='0.3'>option3</option>
<option value='3'>option4</option>
<option value='3'>option5</option><option value='16'>option6</option><option value='16'>option7</option><option value='16'>option8</option></select> <input type='submit' value='='> 363
    </form> 

The Url

http://localhost/test.php?a=121&b=3

参数

a 121 b 3