1

我在 PHP 中有类似于以下的代码:

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

假设第一个函数返回 true(成功移动上传的文件),第二个函数返回 false。为什么文件没有被移动?如果我删除第二个函数调用,文件将移动到它的新位置。

***编辑:我不是在问为什么大括号 {} 内的代码不会运行。我认为 php move_uploaded_file 函数在调用时应该移动一个临时文件,即使它旁边调用的函数 (functionReturningFalse()) 返回 false。不是这种情况。如果第二个函数返回 false,则我的文件不会移动。

4

3 回答 3

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

如果我删除第二个函数调用,文件将移动到它的新位置。

你走错了路。我不知道是什么改变了行为(或者它是否正在改变),但一般来说右侧任何函数调用的返回值&&都不会改变左侧函数调用的行为-手边&&

一个函数的主体可能会撤消或以其他方式干扰先前函数调用的结果,但听起来不像这里发生的事情。即使是这种情况,它也与第二个函数的返回值没有任何关系。

于 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 回答