PHP if语句 - 我可以像这样使用它吗?

时间:2012-10-04 15:36:05

标签: php

if(!isset($_GET['set']) && (($_GET['set'] != 'on') || ($_GET['set'] != 'off'))){
    header('Location: http://google.com');
    exit;
}

我想检查的是设置是否未设置且值未打开或关闭。这是正确的还是有其他办法吗?

5 个答案:

答案 0 :(得分:6)

不,你只需要这个:

if(!isset($_GET['set'])){
    header('Location: http://google.com');
    exit;
}

答案 1 :(得分:3)

您换了&&||

if (!isset($_GET['set']) || (($_GET['set'] != 'on') && ($_GET['set'] != 'off'))){
    header('Location: http://google.com');
    exit;
}

这些错误并不容易发现。它可以帮助分解问题:

$isSet   = isset($_GET['set']);
$isOn    = $isSet && $_GET['set'] === 'on';
$isOff   = $isSet && $_GET['set'] === 'off';
$isOnOff = $isOn || $isOff;

if (!$isOnOff) {
    ...
}

答案 2 :(得分:1)

您无需在!isset()之后查看。如果未设置$_GET['set'],则不会有任何值。

if(!isset($_GET['set'])) {
    header('Location: http://google.com');
    exit;
}

答案 3 :(得分:0)

我认为最好定义您的变量以避免Notice: Undefined variable:,因为您仍然希望确保$_GET['set']必须是onoff;

$_GET['set'] = isset($_GET['set']) ? $_GET['set'] : null ;

if(!($_GET['set'] == "on" || $_GET['set'] == "off")){
    header('Location: http://google.com');
    exit;
}

答案 4 :(得分:0)

试试这个

if(!isset($_GET['set']))?header('Location: http://google.com'): exit;