如何使用输入表单更改PHP变量?

如何使用输入表单更改PHP变量?,php,arrays,forms,variables,input,Php,Arrays,Forms,Variables,Input,我有一组数组,每个数组都有一个属性值。该值通过函数查找百分比,然后显示在页面上。下面是该代码的一个片段: <?php $balls = array( 'blue' => 4, 'red' => 13, 'green' => 5 ); function percent($array, $element) { $total = array_sum($array); $elementValue = $array[$element];

我有一组数组,每个数组都有一个属性值。该值通过函数查找百分比,然后显示在页面上。下面是该代码的一个片段:

<?php
$balls = array(
    'blue' => 4,
    'red' => 13,
    'green' => 5
);

function percent($array, $element)
{
    $total = array_sum($array);
    $elementValue = $array[$element];
    return ($elementValue / $total) * 100;
}
?>

<html>
<body>
Blue balls per set:<?php echo $balls["blue"]; ?>.
Percentage of blue balls:<?php echo percent($balls, 'blue'); ?>%.
</body>
</html>

等式的其余部分将照常工作,但将使用输入表单中提交的$sets中的新值进行更新。此外,这样的事情会立即更新网页上显示的数字吗

如果
$sets
是您唯一感兴趣更改的内容,您可以轻松设置一个小型HTML表单(假设index.php是您的php文件名):

是的,如果您从HTML表单向PHP页面发送一个值,那么页面上的值将与您在表单中立即发送的值一致

看起来您是从PHP(或一般编程)开始的——祝您好运!要记住的一条重要规则是验证用户输入,就像我们在这里做的那样:我们已经检查发送给我们的是一个数字(这是我们需要的),并且该值大于0

我们只在确定变量符合我们的标准后,才将$u POST['set']的值添加到变量中。你永远不知道人们会送你什么,你想为任何情况做好准备

在开始时将
$sets
设置为1意味着我们从一个默认值开始,我们可以在需要时将
$sets
设置为其他值。对比一下:

if(isset($_POST['sets'])) {
    if(is_numeric($_POST['sets']) && $_POST['sets'] > 0) {
        $sets = $_POST['sets'];
    }
    else {
        $sets = 1;
    }
}
else {
    $sets = 1;
}
这就不那么好了,因为在任何给定的情况下,$set肯定会有一个有效的值,这一点就不那么明显了。这还意味着,如果您决定更改默认值,则需要将
1
更改为另一个数字


在本例中,由于代码很小,所以这一点很简单,但我相信,一旦编写了更大的代码并进行了更复杂的检查,您就可以想象其好处。

您需要将所有变量发送到客户端,并使用Javascript更改显示,或者必须使用AJAX将颜色发送到服务器并返回百分比。PHP在用户更改输入时运行完成。
<form action="index.php" method="post">
 Number of sets: <input type="text" name="sets" />
 <br /><input type="submit" value="Get sum!" />
</form>
$sets = 1; // default value

// Make sure a value was sent
if(isset($_POST['sets'])) {
    // Check that sets is numeric, and above 0
    if(is_numeric($_POST['sets']) && $_POST['sets'] > 0) {
        $sets = $_POST['sets'];
    }
}

// Do computation with $sets...
if(isset($_POST['sets'])) {
    if(is_numeric($_POST['sets']) && $_POST['sets'] > 0) {
        $sets = $_POST['sets'];
    }
    else {
        $sets = 1;
    }
}
else {
    $sets = 1;
}