2016-03-04 131 views
-1

我有一个表单,我有三个文件输入。使用下面的代码,我尝试将文件从TMP本地化移动到./uploads,并附带一些随机散列和文件名。PHP foreach在第一次迭代后停止

我与foreach问题,因为它是停止,第一次迭代和保存文件上传目录后。我不知道为什么它不会为表中的其他两个元素发生。整个功能如下,它有点乱,但我希望它是可以理解的。

function saveFile(){ 
global $patchFile; 


$fileArray = [ $_FILES['file_one']['name'], $_FILES['file_two']['name'], $_FILES['file_three']['name'] ]; 
$tmpArray = [ $_FILES['file_one']['tmp_name'], $_FILES['file_two']['tmp_name'], $_FILES['file_three']['tmp_name'] ]; 

$multiArray = 
[ 
    [$_FILES['file_one']['name'], $_FILES['file_one']['tmp_name']], 
    [$_FILES['file_two']['name'], $_FILES['file_two']['tmp_name']], 
    [$_FILES['file_three']['name'], $_FILES['file_three']['tmp_name']] 
]; 

foreach ($multiArray as $key) 
{ 
    echo "<br />Key: ".$key[0]."\n"; 
    echo "Key_tmp: ".$key[1]."\n"; 


    $randomString = generateRandomString(); 
    $patchFile = './uploads/'.$randomString.$key[0]; 

    echo "<br />Check patchFile: $patchFile"; 

    if(is_uploaded_file($key[1])) 
    { 
     echo "<br />Begin uploading to directory...<br />"; 
     if(!move_uploaded_file($key[1], $patchFile)) 
     { 
      echo 'Problem: Nie udało się skopiować pliku do katalogu.'; 
      return false; 
     } 
     else { 
      echo "File was saved in uploads directory"; 
      return true; 
     } 
    } 
    else 
    { 
     echo "Uploading to directory... FAILED!"; 
    } 
} 
} 
+2

当你从循环返回某个东西时,循环总是被打破 –

+0

你应该从这个评论做出回答;)谢谢! –

+0

没关系,它就这样了 –

回答

2

当您return东西从循环,循环总是被打破。

PHP manual

如果在一个函数中调用,return语句,将立即结束此函数的执行并将它的参数作为函数调用的值。