我有php文件,我使用if statments,我通过ajax调用此文件.. onSuccess它给我结果如果文件上传成功或错误。
代码看起来像这样:
if(empty($_FILES['file']['name'])){
return "no image was selected";
}
if($two_many_images){
return "Only x images are alowed to upload";
}
if($size>2014522){
return "Size error";
}
foreach($_FILES["file"]['tmp_name'] as $key=>$imgLocation){
uploadImage($_FILES["fileToUpload"]['tmp_name'][$key], $imgLocation);
}
问题:首先,如果法规条件为真,那么我的第二个是否会执行判决?
答案 0 :(得分:1)
这很容易证明,例如你有一个功能:
funciton foo(){
echo "foo\n";
return;
echo 'bar';
}
如果你打电话
foo();
它会打印出来
foo
但不是bar
。一旦执行指针命中返回,它将返回到调用foo()
的位置。这也可以很容易地显示出来。
foo();
foo();
foo();
打印
foo
foo
foo
更新:根据你的意见,正确的方法来做你想要的是这个
if(empty($_FILES['file']['name'])){
echo "no image was selected";
exit();
}
if($two_many_images){
echo "Only x images are alowed to upload";
exit();
}
if($size>2014522){
echo "Size error";
exit();
}
foreach($_FILES["file"]['tmp_name'] as $key=>$imgLocation){
uploadImage($_FILES["fileToUpload"]['tmp_name'][$key], $imgLocation);
}
我使用exit()
而不是返回,因为它更具可读性并且更有意义,即使在您的情况下返回具有相同的效果。退出将完全结束php的执行,这真的是你想要的。您也可以执行类似
die( 'Message' );
或者
exit( 'Message' );
同样会退出并输出消息。它们几乎都是一样的...我把echo
放在第一位只是因为我总是觉得把东西放在退出处有点脏。不知道为什么会这样,也许我将它链接到非预期的行为,因为看到die()在文件的顶部非常多,而不是在框架之外运行。但我离题了。
仅仅为了完整性,根据您的注释,如果您在PHP中调用全局范围的返回,则无法返回到该位置,因此执行只会暂停。使用exit或die更好的原因是return有明显不同的行为,即从函数调用中“返回”数据。因此,使用最符合您想要的行为的方法更具可读性。那就是结束当前脚本(PHP实例)的执行。
答案 1 :(得分:0)
不,你的第二个陈述不会被执行。调用返回时,不会执行其余代码。 PHP文档说:
如果从全局范围调用,则结束当前脚本文件的执行。