Я создаю загрузчик и мне нужна помощь, если это возможно. У меня есть загрузчик, что человек может добавить столько картинок, сколько они хотят, к мультизагрузчику с полевым сумматором javascript.
Я хочу повторить все изображения, которые он загрузил в виде текста, но используя $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>';
}
?>
Я надеюсь, что я спрашиваю, ясно.
Вы можете использовать простой цикл foreach и перебрать все элементы в $fileName
foreach ($fileName as $file) {
echo "Value: $file<br />\n";
}
В этом примере то, что вы называете $fileName[0]
, $fileName[1]
, …, в вашем вопросе просто называется $file
, Цикл foreach позаботится о подсчете предметов внутри $fileName
, так что вам не обязательно это знать.
Из-за этого я мог бы предложить вам переименовать $fileName
в $fileNames
(так как это массив) и напишите foreach так: ($fileNames as $fileName)
,
Для других целей, если вам нужно знать, сколько элементов в массиве вы можете использовать кол-().
Других решений пока нет …