1

次のようなクエリを実行しようとしています:

$_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

    }
}

これは正しく、このクエリを作成する最も簡単な方法ですか?

4

5 に答える 5

2

あなたの方法はまったく問題ありませんが、私は次の方法でそれを行うようにほとんど誘惑されます. これをお勧めする唯一の理由は、コードでアクションとページの両方を設定する必要があるためです。アクションが設定されていない場合、ページが == 'items' であるかどうかをチェックする意味はあまりありません。

if(isset($_GET['page']) && isset($_GET['action'])) {
    if($_GET['page'] == 'items' && ($_GET['action'] == 'new' || $_GET['action'] == 'edit')) {
        //do code here
     }
}
于 2012-06-25T14:05:58.977 に答える
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
    }
}
于 2012-06-25T14:04:17.227 に答える
0

それは可能な解決策の1つです

if ( @$_GET['page'] == 'items' && in_array(@$_GET['action'], array('new','edit')))
于 2012-06-25T14:08:33.677 に答える
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
}

コードの繰り返し回数を減らし、ロジックを 1 か所にカプセル化します。

于 2012-06-25T14:21:32.560 に答える