php-比较一个数组的索引和另一个数组的值

时间:2018-10-09 14:06:56

标签: php

我有一个项目,其中应将带有图像删除选项的多张图像上传到网页。

因此,当我使用带有图像名称的输入上传图像并删除一些上传的图像时,显而易见的是,移除的图像不会从输入中移除,并且当我提交表单时,所有图像都将插入数据库中,甚至移除的图像.. < / p>

现在,当我从网页上删除图像时,我会在表单内添加一个名称为deletedImg[]的隐藏输入:此输入将具有已删除图像的索引(例如,首先删除图像,然后输入名称为deletedImg[]的值为0,第二张图像被删除,然后另一个名称为deleteImg []的输入的值为1 ..依此类推)

这些值是已删除图像的索引,在提交表单时上载图像时,我想忽略它们。如何实现此目的?

if(isset($_POST['post']))
{
    $deleted = $_POST['deletedImg']; //This is the array containing the deleted image indexes

    foreach($_FILES['images']['name'] as $key=>$val)
    { 
        $nameOfImage = basename($_FILES['images']['name'][$key]);
        $avatarTempName = $_FILES['images']['tmp_name'][$key];
        // List of allowed image extensions
        $avatarAllowedExtension = array("jpeg", "jpg", "png", "gif");

        // Get avatar extension
        $avatarExtension = strtolower(end(explode('.', $nameOfImage)));

        if(in_array($avatarExtension, $avatarAllowedExtension))
        {
            $postImage = rand(0, 10000000000) . '_' . $nameOfImage;

            // Move image into Covers folder
            move_uploaded_file($avatarTempName, "Uploads\Posts\\" . $postImage);

            // Insert image into database
            $stmt = $con->prepare("insert into postImages (ID , userId , postID , postImg) values (DEFAULT , :userId, (select max(ID)from post) , :postImg)");
            $stmt-> execute(array(
                'userId' => $_SESSION['ID'],
                'postImg' => $postImage
            ));
        }
    }
}

1 个答案:

答案 0 :(得分:0)

要获取此数组的值,可以使用以下代码:

$deleted = array_values($_POST['deletedImg']);

然后,您可以使用in_array($val, $deleted)来检查已删除的数组中是否存在已发布的映像名称之一。