编码此 php 倍数 if 条件的最短方法


Shortest way to code this php multiple if condition

我正在尝试执行以下查询:

如果$_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
    }
}
这是

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

你也可以

这样做:

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

你的方式很好,尽管我几乎想用以下方式去做。 我建议这样做的唯一原因是您的代码要求同时设置操作和页面。 如果未设置操作,则检查页面是否为=="项目"没有多大意义。

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

您也可以尝试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
    }
}

这是可能的解决方案之一

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

一切正常,但您也可以使用函数:

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
}

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