MultiDev
MultiDev

Reputation: 10649

Shortest way to code this php multiple if condition

I am trying to do a query like:

If $_GET['page'] == 'items' AND $_GET['action'] == 'new' OR 'edit'

Here's what I have:

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

    }
}

Is this correct, and is this the easiest way to make this query?

Upvotes: 1

Views: 211

Answers (5)

Uladzimir Pasvistselik
Uladzimir Pasvistselik

Reputation: 3921

Everything is ok, but also you can use function:

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

Usage:

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

It will reduce the number of repetitions in your code and encapsulate logic in one place

Upvotes: 0

Ziumin
Ziumin

Reputation: 4860

That is one of possible solutions

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

Upvotes: 0

Jon Taylor
Jon Taylor

Reputation: 7905

Your way is perfectly fine, although I would almost be tempted to do it the following way. The only reason I suggest this is that your code requires that both action and page are set. If action is not set then there isn't much point checking if the page is == 'items'.

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

Upvotes: 2

feeela
feeela

Reputation: 29932

You may also try in_array like:

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

Upvotes: 1

Mark Nemec
Mark Nemec

Reputation: 119

You could have done it like this as well:

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

    }
}

Upvotes: 3

Related Questions