我在PHP中有类似以下的代码:
if(move_uploaded_file($tempfile, $newfilelocation) && functionReturningFalse()) {} else {...}
假设第一个函数返回true(成功移动上传的文件),还有一些返回false的函数。为什么文件没有被移动?如果我删除第二个函数调用,文件将移动到新的位置。
***编辑:我不是在问为什么大括号{}内的代码不会运行。我认为php move_uploaded_file函数应该在调用它时移动一个临时文件,即使旁边调用的函数(functionReturningFalse())返回false。不是这种情况。如果第二个函数返回false,则不移动我的文件。
答案 0 :(得分:0)
if (true && false) {
echo 'both true';
} else {
echo 'one or both false';
}
看到了! (NOT)强>
if (true && ! false) {
echo 'both true';
} else {
echo 'one or both false';
}
或明确...... if(move_uploaded_file($tempfile, $newfilelocation) == true && functionReturningFalse() == false) {
答案 1 :(得分:0)
if((move_uploaded_file($tempfile, $newfilelocation)) && ! (functionReturningFalse())) {} else {...}
答案 2 :(得分:0)
如果我删除第二个函数调用,文件将移动到新位置。
你走错了路。我不知道是什么改变了行为(或者它是否正在发生变化),但一般, {{>右侧任何函数调用的返回值{{ 1}}不会改变&&
左侧函数调用的行为。
一个函数的 body 可能 撤消或以其他方式干扰前一个函数调用的结果,但它听起来不像是什么发生在这里。即使是这种情况,也不会与第二个函数的返回值有任何关系。