如果条件,这个PHP多重编码的最短方式

时间:2012-06-25 13:59:26

标签: php if-statement

我正在尝试进行如下查询:

如果$_GET['page'] == 'items'$_GET['action'] == 'new' OR 'edit'

这就是我所拥有的:

if (isset($_GET['page']) && $_GET['page'] == 'items') {
    if (isset($_GET['action']) && $_GET['action'] == 'new' || isset($_GET['action']) && $_GET['action'] == 'edit') {

        // This is what Im looking for

    }
}

这是否正确,这是进行此查询的最简单方法吗?

5 个答案:

答案 0 :(得分:3)

你也可以这样做:

if (isset($_GET['page']) && $_GET['page'] == 'items') {
    if (isset($_GET['action']) && ($_GET['action'] == 'new' || $_GET['action'] == 'edit')) {

    }
}

答案 1 :(得分:2)

你的方式完全没问题,虽然我几乎想以下面的方式去做。我建议这个的唯一原因是你的代码要求设置动作和页面。如果未设置操作,则无法检查页面是否为==' items'。

if(isset($_GET['page']) && isset($_GET['action'])) {
    if($_GET['page'] == 'items' && ($_GET['action'] == 'new' || $_GET['action'] == 'edit')) {
        //do code here
     }
}

答案 2 :(得分:1)

您也可以尝试in_array

if (isset($_GET['page']) && $_GET['page'] == 'items')
{
    if ( !empty( $_GET['action'] ) && in_array( $_GET['action'], array( 'new', 'edit' ) )
    {
        // This is what Im looking for
    }
}

答案 3 :(得分:0)

这是可能的解决方案之一

if ( @$_GET['page'] == 'items' && in_array(@$_GET['action'], array('new','edit')))

答案 4 :(得分:0)

一切都很好,但你也可以使用功能:

function paramIs($param, $values) {
    $result = false;
    foreach ((array)$values as $value) {
        $result = $result || isset($_GET[$param]) && $_GET[$param] == $value;
    }
    return $result;
}

用法:

if (paramIs('page', 'items') && paramIs('action', array('new', 'edit')))
{
    // your code here
}

它将减少代码中的重复次数并将逻辑封装在一个地方