如何缩短此功能?

时间:2014-05-08 19:37:58

标签: php

我在PHP中使用此功能时遇到了一些问题。我在此页面上发布了不断变化的项目数量,并且我使用此函数返回数组中的变量:

function grade($a) {
    if ($a == 1) {
        return $_POST['1'];
    }
    if ($a == 2) {
        return $_POST['2'];
    }
    if ($a == 3) {
        return $_POST['3'];
    }
    if ($a == 4) {
        return $_POST['4'];
    }
    if ($a == 5) {
        return $_POST['5'];
    }
    if ($a == 6) {
        return $_POST['6'];
    }
    //... you get the idea
}

这可能不是正确的方法。如何缩短此功能,以便我不必为每个可能的数组变量创建if语句?

谢谢你的帮助!

7 个答案:

答案 0 :(得分:7)

您可以通过将变量的值用作array键来轻松完成此操作:

function grade($a) {
    if (!array_key_exists($a, $_POST)) {
        // Given grade key does not exist in the $_POST array
        return null;
    }
    return $_POST[$a];
}

您将注意到,根据documentation,您不必将整数转换为字符串:

  

此外还会发生以下关键演员:

     
      
  • 包含有效整数的字符串将强制转换为整数类型。例如。关键" 8"实际上将存储在8下。
  •   

答案 1 :(得分:3)

非常简单,你只需将变量传递给return:

function grade($a) {
    if( !isset( $_POST[$a] ) )
        return 0;
    return $_POST[$a];
}

这也会检查它是否存在,以返回0作为您的成绩。

答案 2 :(得分:2)

您可以使用切换操作符:http://www.php.net/manual/fr/control-structures.switch.php

我没有使用php,但这可能也有效:

function grade($a) {
    return $_POST['' . $a];
}

答案 3 :(得分:2)

简单说明:

function grade($a) {
  return isset($_POST[$a]) ? $_POST[$a] : '' ;
}

答案 4 :(得分:2)

三元如果是最短的。

function grade($a)
{
    return isset($_POST[$a])? $_POST[$a] : null;
}

答案 5 :(得分:0)

你可以像下面那样写作

function grade($a) { 
    return $_POST[$a];
}

答案 6 :(得分:0)

function grade($a) {
    if (isset($_POST[$a])) {
        return $_POST[$a];
    }
    return false;
}