【发布时间】:2009-10-12 01:52:20
【问题描述】:
我有一个 foreach 循环,它应该检查一个复选框是否被某个项目选中。如果选中该复选框,我需要查看脚本的文件上传部分是否有值,如果有,则继续检查用户尝试上传的文件的文件类型和大小。
目前,如果第一个复选框只有一个错误,那么这可以正常工作,但由于某种原因,如果多个文件出现错误,它将再次循环结果。例如,如果两个文件有错误,它将给出四个结果(列出每个错误两次),如果三个项目的错误我得到 6 个结果。
我对循环真的很陌生,我想知道是否应该切换到 for 循环并执行类似循环的操作,直到错误为零。
这是我的html
<ul class="imgPreview">
<li>
<a href="#">dialogwarning_pimg4_15_1276648623.png</a>
<a href="#" class="edit_project_file"> <img src="images/edit.gif"/></a>
</li>
<li>
<input name="upload_project_images[]" type="file" />
</li>
<li>
<input name="edit_image[]" type="checkbox" value="dialogwarning_pimg4_15_1276648623.png"/>
</li>
<li>
<a href="#">formatjustifyright_pimg3_15_1276648623.png</a>
</li>
<li class="edit_project_image">
<input name="upload_project_images[]" type="file" />
</li>
<li class ="edit_file_checkbox">
<input name="edit_image[]" type="checkbox" value="formatjustifyright_pimg3_15_1276648623.png"/>
</li>
</ul>
PHP for 循环如下:
$remove_images_files = $_POST['edit_image'];
if(isset($remove_images_files)){
foreach ($remove_images_files as $update){
foreach ($_FILES["upload_project_images"]["type"] as $key => $type) {
$upload_project_images = $_FILES["upload_project_images"]["name"][$key];
$upload_project_images_type = $_FILES["upload_project_images"]["type"][$key];
$upload_project_images_size = $_FILES["upload_project_images"]["size"][$key];
$upload_project_image_ext = strtolower(substr($upload_project_images, strrpos($upload_project_images, '.') + 1));
if($upload_project_images != "") {
if((!in_array($upload_project_images_type,$upload_permitted_types['mime'])) || (!in_array($upload_project_image_ext,$upload_permitted_types['ext']))) {
$errmsg_arr[] = 'Please select a jpg, jpeg, gif, or png image to use as the project image' .$upload_project_images . $upload_project_image_ext;
$errflag = true;
}
elseif($upload_project_images_size > $max_upload_size_bytes ) {
$errmsg_arr[] = 'Please select an image smaller than '. $max_upload_size_Kbytes .' to use as the project image';
$errflag = true;
}
}
}
}
}
【问题讨论】:
标签: php error-handling loops foreach