1

これが正しく機能しない理由がわかりません。設定される変数は次のとおりですが、「type」の最終結果では、fm ではなく m に設定されます。

cpanel_notifications - 1
remote_server - 1

if ($_POST['cpanel_notifications'] == 1){
$type = "m";
}
elseif($_POST['cpanel_notifications'] == 0){
$type = "nm";
}
elseif($_POST['cpanel_notifications'] == 1 && $_POST['remote_server'] == 1){
$type = "fm";
}
elseif($_POST['cpanel_notifications'] == 0 && $_POST['remote_server'] == 0){
$type = "fnm";
}

結果:分

4

5 に答える 5

7

これは、最初のifステートメントが正しいためです。のいずれかに行く理由はありませんelses

于 2012-12-21T18:49:16.357 に答える
2

あなたがする必要があるのは、あなたのifを並べ替えることです

if($_POST['cpanel_notifications'] == 1 && $_POST['remote_server'] == 1){
    $type = "fm";
}
elseif($_POST['cpanel_notifications'] == 0 && $_POST['remote_server'] == 0){
    $type = "fnm";
}
elseif ($_POST['cpanel_notifications'] == 1){
    $type = "m";
}
elseif($_POST['cpanel_notifications'] == 0){
    $type = "nm";
}
于 2012-12-21T18:49:05.823 に答える
1

複数の条件でステートメントを上に移動することを指定するコメントに同意します。一般的な経験則として、最も具体的なステートメントを一番上に置き、条件リストの下に行くにつれて、より一般的なものにします。

于 2012-12-21T18:56:04.683 に答える
1

条件の順番を変えるだけ

if ($_POST['cpanel_notifications'] == 1){
    if ($_POST['remote_server'] == 1) { 
        $type = "fm";
    } else {
        $type = "m";
    }
}
elseif($_POST['cpanel_notifications'] == 0){
    if ($_POST['remote_server'] == 0) {
        $type = "fnm";
    } else {
        $type = "nm";
    }
}

あるいは

if ($_POST['cpanel_notifications'] == 1){
    $type = ($_POST['remote_server'] == 1?"fm":"m");
}
elseif($_POST['cpanel_notifications'] == 0){
    $type = ($_POST['remote_server'] == 0?"fnm":"nm");
}
于 2012-12-21T18:51:03.423 に答える
-1

さらに追加=

if ($_POST['cpanel_notifications'] === 1){
$type = "m";
}
elseif($_POST['cpanel_notifications'] === 0){
$type = "nm";
}
elseif($_POST['cpanel_notifications'] === 1 && $_POST['remote_server'] === 1){
$type = "fm";
}
elseif($_POST['cpanel_notifications'] === 0 && $_POST['remote_server'] === 0){
$type = "fnm";
}

http://php.net/manual/en/language.operators.comparison.php

上記のリンクは、余分な = 記号を追加する理由を示しています。

于 2012-12-21T18:49:41.357 に答える