PHPでこれを行うことはできますか?
if ($Var = $this->test1() == true) {
var_dump($Var);
}
public function test1() {
return true;
}
これはtrueをエコーしますが、これがそのような戻り値をチェックする正しい方法であるかどうかはわかりません。
PHPでこれを行うことはできますか?
if ($Var = $this->test1() == true) {
var_dump($Var);
}
public function test1() {
return true;
}
これはtrueをエコーしますが、これがそのような戻り値をチェックする正しい方法であるかどうかはわかりません。
はい、できますが、次のように記述します。
if (($var = $this->test1()) === true) {
var_dump($var);
}
安全を確保し、読者に警告するために、何かが起こっています。
これを行うことはお勧めしませんが、場合によってはこれで問題ありません。遅延実行が望ましい複雑なif-elseツリーなど。
if (($result = slow_process()) !== false) {
return $result;
} else if (($result = slow_process1()) !== false) {
return $result;
} else if (($result = slow_process2()) !== false) {
return $result;
} else if (($result = slow_process3()) !== false) {
return $result;
}
これは過度に単純化されていますが、これらの状況は発生します。
できますが、知っておくべきことが2つあります。
あなたが次のようなことをするとき:
if ($Var = $this->test1() == true) {
演算子は混乱しています:
あなたの場合、$ this-> test1()はtrueを返すので、問題ではありません。しかし、コードを少し変更すると:
if ($Var = $this->test1() == 5) {
var_dump($Var);
}
public function test1() {
return 3;
}
あなたのコードを読んだ人は、$ this-> test1()を$ Varに保存したいのか(つまり、varに3を作成したいのか)、または比較結果を$ this-> test1==5に入れたいのか理解できません。 Var(false)。
最後に$Varに残っているものは、 PHP 5.3認定では非常に良い質問かもしれませんが、有用なケースではありません。
間違いを避けるために、括弧を使用します:
if (($var = $this->test1()) == true) {
あなたはタイプの世話をする必要があります:
キャスタブルをtrueに戻すことができるものの例を示します。
function test1() { return true; }
function test2() { return 3; }
function test3() { return 3.42; }
function test4() { return "x"; }
function test5() { return array('x'); } // array() == true returns false
function test6() { return new stdClass(); }
echo test1() == true;
echo test2() == true;
echo test3() == true;
echo test4() == true;
echo test5() == true;
echo test6() == true;
// outputs 111111 (1 = true)
間違いを避けるために、===演算子を使用する必要があります。最後のコードは次のようになります。
if (($var = $this->test1()) === true) {
その== true
部分は不要です。あなたが持っているのは有効な構文ですが、混乱を招くものもあります。あなたはいつでもすることができます:
$Var = $this->test1();
if ($Var) { ...
開発チームと一緒に標準を決定するだけです。
次のこともできます。
if ($Var = $this->test1()) {
var_dump($Var);
}
public function test1() {
return true;
}