2016-09-12 7 views
0

を返す場合、私はしばらくの間、PHPプログラミングの外にしてきたが、私は、次のようなものを書くことができるようにするために使用され、ほぼ確信している:は条件付きで変数を割り当てる関数が値

function checkData($data, $moreData) { 
    if ($foo != validate($data)) { 
     return false; 
    } 
    if ($bar != validate($moreData)) { 
     return false; 
    } 
    $result = "$foo" . "$bar"; 
    return $result; 
} 

.. "$ foo"と "$ bar"はまだ設定されておらず、 "validate()"関数が有効なデータを返すか、検証が失敗した場合はfalseを返します。

どこが間違っているのかわかりませんが、そのコード(とそのバリエーション)が$ myVarの "未定義変数"エラーを投げています。

このコンセプトの正しい構文は何でしょうか?

+0

$ myVar?あなたは$結果を意味しますか?それで$ fooがまだ設定されていないとき、$ foo!= Xをどうやってテストしますか?たぶんあなたはif($ foo = validate($ data)){return false; } validate()はtrueまたはfalseを返しますか? –

答えて

0

少し違っていると思います。代わりに

if ($foo != validate($data)) { 

のあなたは、これは何が起こっているがあり

if (!$foo = validate($data)) { 

使用してきました: 1.コール検証機能 2.変数 3.確認の結果を割り当てた場合、そのための条件変数。 それは

$foo = validate($data) 
if(!$foo) 

と同じのようなものだ。しかし、あなたが理解できるよう、それは(笑、そうでない場合は、なぜuはここでそれを聞いてください)、それが読みにくいだと説明が必要として、物事のやり方をお勧めしません

+0

それはそれです - ありがとう! – Matthew

0

PHPはこれまでより厳しくなっています。常に変数をインスタンス化する必要があります。あなたは$resultに存在しない変数を割り当てようとどこ

function checkData($data, $moreData) { 
    $foo = $bar = null; 
    if (!$foo = validate($data)) { 
     return false; 
    } 
    if (!$bar = validate($moreData)) { 
     return false; 
    } 
    $result = "$foo" . "$bar"; 
    return $result; 
} 

それは警告を投げているという条件付きではありませんが、以下の変更があなたの「未定義の変数」の問題を解決する必要があります。さらに、条件は割り当てではなく比較をチェックしています。

関連する問題