2011-09-12 12 views
2

私はroughtlyこれに似た何かを持っている:私は条件のいずれかが満たされているという事実を知ってPHP変数のスコープとのIF

function get_gender ($gid){ 
    $return= ''; 

...some code .. 

    if ($male !== 0 && $female !== 0){ 
     $return = 'mixed'; 
    }else if ($male !== 0 && $female == 0){ 
     $return = 'male'; 
    } 
    return $return; 

} 

をので、私は$の戻り変数が更新されると想定しました。それはいつも空に戻ってくる。これは範囲の問題ですか?

+0

'$ male'と' $ female'は何に設定されていますか?それはあまり明確ではありません。 –

+0

'$ male === 0'の場合、どちらの条件にも入力されません。 'else else'ブロックの中にエコーを入れて、PHPがそこに到着するかどうかを確認してください。 – NullUserException

+0

また、この' $ return'変数を持たずに 'if-else'ブロックから明示的に' return'しないのはなぜですか?それはあなたにいくつかのステップ、変数とIMOを節約します。 – NullUserException

答えて

0

いいえ、これは範囲の問題ではありません。変数が間違って設定されなければならないため、条件は満たされません。多分それは女性(私はそのオプションが表示されません)、またはあなたが明示的なタイプセンシティブな条件を使用しているため、結果が女性でなければならないかもしれません(おそらくあなたの変数は文字列を含んでいます)=====!====と何かが変わるかどうかを確認)

証拠これに、別のelse{ }$return「ああnoez」に(または何か他のものを)設定を追加してみてください。

4

$maleがゼロの場合、$femaleはチェックされず、どちらの割り当ても実行されず、$returnは空のままです。

+0

ありがとう、それは実際には私がチェックしていた変数をロードしていたから来ていた..あなたはすべて良い点を作ったが、コードとは何もしない!再度、感謝します – blablabla

1

いいえ、デバッグの問題です。スコープは変更されないため、ここでは何もしません(少なくとも、提供したコードには含まれていません)。

これを試してみてください:

if ($male !== 0 && $female !== 0){ 
    $return = 'mixed'; 
    echo 'Return: ' . $return; 
}else if ($male !== 0 && $female == 0){ 
    $return = 'male'; 
    echo 'Return: ' . $return; 
} else { 
    echo 'None of the conditions met'; 
} 

以外にも、あなたが代わりに明示的な整数はチェックのこの(真、偽)のためのブール値をしたくないですか?

1

ここでは問題はありません。

あなたの問題はおそらくあなたの条件にあります。特に、strict equality(すなわち、!==)の使用。

関連する問題