1

我有几个单选按钮数组。它们被命名为awardLevel0[]、awardLevel1[]、awardLevel2[]等,由用户动态生成。我想知道这个函数是否可以得到它们的总和值。

function awardCheck () {
    $exist = true;
    $num = 0;
    $endsum = 0;
    while ($exist)
    {
        $names = "awardLevel" . $num;
        $awardLev = $_POST[$names];
        if (empty($awardLev)) {
            $exist = false;
            return $endsum;
        }
        else 
            $endsum = $endsum + $awardLev;
        $num++;
    }
    return $endsum;
}

当我运行上面的代码时,它给了我一个错误 $endsum = $endsum + $awardLev; 说我正在使用不支持的操作数类型。当我删除 $awardLev 时,它运行时不会出现该错误。

是否可以将包含字符串的变量传递给 $_POST

$postname = "awardLevel2";
$awardLev = $_POST[$postname];
4

3 回答 3

3

是的,您绝对可以这样做,但请注意:

使用[]POST 值中的语法,您将得到一个数组而不是字符串。如果你只是放弃数字,你可以利用它来发挥你的优势,甚至array_sum_POST[awardLevel]价值,但我不确定这是否适合你。

我错过了您的语法错误(顺便说一句,下次立即发布任何错误)。

由于awardLev是一个数组,因此您只能+与另一个数组一起使用,而不能与整数一起使用。只需使用

$endsum += $awardLev[0]

反而。或者,如果您期望每个有多个值awardLev

$endsum += array_sum($awardLev);
于 2012-08-21T22:06:11.370 回答
1

当你有很多已知的组件并且你想用你的帖子变量的名称创建动态变量时,一个有用的事实是做一些类似的事情:

foreach ($_POST as $key => $value){
    $$key = $value;
}

例如,如果你有一个像

<textarea name="postText"></textarea>

您将有一个名为“postText”的变量

于 2012-08-21T22:17:19.357 回答
0

你试过这个..??

$endsum = $endsum.$awardLev;
于 2012-08-22T11:38:52.247 回答