1

PHP で次のようなコードがあります。

if(move_uploaded_file($tempfile, $newfilelocation) && functionReturningFalse()) {} else {...}

最初の関数が true を返し (アップロードされたファイルの移動に成功)、false を返す 2 番目の関数があるとします。ファイルが移動されないのはなぜですか? 2 番目の関数呼び出しを削除すると、ファイルは新しい場所に正常に移動します。

***編集: 中括弧 {} 内のコードが実行されない理由を尋ねているわけではありません。私の考えでは、php move_uploaded_file 関数は、呼び出されたときに一時ファイルを移動する必要があります。その横で呼び出された関数 (functionReturningFalse()) が false を返したとしてもです。これはそうではありません。2 番目の関数が false を返す場合、ファイルは移動されません。

4

3 に答える 3

0

2 番目の関数呼び出しを削除すると、ファイルは新しい場所に正常に移動します。

あなたは間違った道を進んでいます。何が動作を変更しているのか (またはまったく変更されているのか) はわかりませんが、一般、右側の関数呼び出しの戻り値は&&、左側の関数呼び出しの動作を変更しません。 -手の側&&

ある関数の本体が以前の関数呼び出しの結果を元に戻したり、干渉したりする可能性はありますが、ここで起こっていることはそうではないようです。その場合でも、2 番目の関数の戻り値とは関係ありません。

于 2013-11-13T00:27:34.510 に答える
0
if (true && false) {
    echo 'both true';
} else {
    echo 'one or both false';
}

を参照してください。(いいえ)

if (true && ! false) {
    echo 'both true';
} else {
    echo 'one or both false';
}

または明示的に...if(move_uploaded_file($tempfile, $newfilelocation) == true && functionReturningFalse() == false) {

于 2013-11-12T19:22:36.883 に答える
0
if((move_uploaded_file($tempfile, $newfilelocation)) && ! (functionReturningFalse())) {} else {...}
于 2013-11-12T19:30:10.380 に答える