【问题标题】:Php foreach loop, with looping error messagesphp foreach 循环,带有循环错误消息
【发布时间】: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


    【解决方案1】:

    您的问题可能是您正在迭代

    $_FILES["upload_project_images"]["type"]
    

    对于$remove_images_files 中的每个条目,我认为这不是您想要做的。如果你取出以下行:

    foreach ($remove_images_files as $update){
    

    及其对应的},它做你想做的事吗?

    【讨论】:

    • 很奇怪,我本可以发誓我尝试过,但那是为了解决问题,所以我一定做错了。感谢您的帮助。
    猜你喜欢
    • 2018-01-22
    • 2013-08-31
    • 2016-09-26
    • 2012-07-19
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多