我在PHP中有类似于以下内容的代码:
if(move_uploaded_file($tempfile, $newfilelocation) && functionReturningFalse()) {} else {...}
假设第一个函数返回 true(成功移动上传的文件),并且有第二个函数返回 false。为什么文件没有被移动?如果我删除第二个函数调用,文件将移动到其新位置。
编辑:我不是在问为什么大括号{}内的代码不会运行。我认为 php move_uploaded_file 函数在被调用时应该移动一个临时文件,即使旁边调用的函数 (functionReturningFalse()) 返回 false。事实并非如此。如果第二个函数返回 false,则不会移动我的文件。
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) {
if((move_uploaded_file($tempfile, $newfilelocation)) && ! (functionReturningFalse())) {} else {...}
如果我删除第二个函数调用,文件将移动到其新位置。
你走错了路。我不知道是什么改变了行为(或者它是否正在改变),但一般来说,&&
右侧任何函数调用的返回值都不会改变&&
左侧函数调用的行为。
一个函数的主体可能会撤消或以其他方式干扰先前函数调用的结果,但听起来不像是这里正在发生的事情。即使如此,它也与第二个函数的返回值没有任何关系。