数组每个文件上传foreach到单个字符串

时间:2014-11-22 01:55:32

标签: php arrays foreach implode

我建立一个上传者,如果可能的话需要一些帮助。我有一个上传器,一个人可以使用javascript字段加法器向多个上传器添加任意数量的图片。

enter image description here

我想要回复他作为文字上传的所有图片,但是使用$fileName[0]$fileName[1]$fileName[2]我认为不会有效,因为它不确定要上传的数量。是否有一个数组我可以用来内爆或连接所有数组以显示为一个。

这是我的代码。

<?php
if (isset($_POST['addpart'])) {

    $image = $_FILES['images']['tmp_name'];
    $name  = $_POST['username'];
    $name  = str_replace(' ', '_', $name);
    $i     = 0;
    $i2    = 1;
    $id    = uniqid();

    foreach ($image as $key) {
        $fileData   = pathinfo(basename($_FILES["images"]["name"][$i]));
        $fileName[] = $name . '_' . $id . '_' . $i2 . '.' . $fileData['name'] . 'jpg';
        move_uploaded_file($key, "image/" . end($fileName));
        //copy("image/" . end($fileName) , "image_thumbnail/" . end($fileName));
        $images     = "image/" . end($fileName);
        $new_images = "image_thumbnail/" . end($fileName);
        $width      = 100; //*** Fix Width & Heigh (Autu caculate) ***//
        $size       = GetimageSize($images);
        $height     = round($width * $size[1] / $size[0]);

        switch ($size[2]) {
            case IMAGETYPE_GIF:
                $images_orig = imagecreatefromgif($images);
                break;

            case IMAGETYPE_JPEG:
                $images_orig = imagecreatefromjpeg($images);
                break;

            case IMAGETYPE_PNG:
                $images_orig = imagecreatefrompng($images);
                break;

            default:
                die("Unknown filetype");
        }

        //$images_orig = imagecreatefromjpeg($images);
        $photoX     = ImagesX($images_orig);
        $photoY     = ImagesY($images_orig);
        $images_fin = ImageCreateTrueColor($width, $height);
        ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width + 1, $height + 1, $photoX, $photoY);
        ImageJPEG($images_fin, $new_images);
        $i++;
        $i2++;
    }

    echo 'Uploaded<br />';
    echo 'Main Image - <a href="image/' . $fileName[0] . '">' . $fileName[0] . '</a><br />';
    echo 'Extra Image 1 - <a href="image/' . $fileName[1] . '">' . $fileName[1] . '</a><br />';
    echo 'Extra Image 2 - <a href="image/' . $fileName[2] . '">' . $fileName[2] . '</a><br />';
    echo '<hr>';
}

?>

我希望我所要求的是明确的。

1 个答案:

答案 0 :(得分:1)

您可以使用简单的foreach loop并循环浏览$fileName

中的所有项目
foreach ($fileName as $file) {

    echo "Value: $file<br />\n";

}

在此示例中,您在问题中称为$fileName[0]$fileName[1],...的内容简称为$file。 foreach循环将负责计算$fileName内的项目,以便您不必知道它。

因此,我建议您将$fileName重命名为$fileNames(因为它是一个数组)并按照以下方式编写foreach:($fileNames as $fileName)


出于其他目的,如果您需要知道数组中有多少项,可以使用count()