为什么数组的大小比它本身的数组大



更详细地解释我的问题:当上传多个图像时,我通过sizeof($_FILES['imgs'](从图像数组中获得大小;用这个数字,我做了一个for循环来给出图片的细节。但我收到了几个错误:警告:第30行C:\examplep\htdocs\projetcs\en\upload.php中的未定义数组键3。我不知道你为什么能帮我?

错误图像

网站代码:

<body>
<?php
session_start();
if(!isset($_SESSION["MAIN"])){
//Header("Location: ./login.php?for=upload");
//exit();
}
if(isset($_POST["upload"])){
//require '../utils/sql.php';
//$stmt=$mysql->prepare("INSERT INTO DEALS (USER, TITLE, DESCR, COST, IMGS, ST) VALUES ()");
var_dump($_FILES['imgs']);
$max = sizeof($_FILES['imgs']);
echo $max;
for($i = 0; $i < $max-1;$i++)
{
?><br/><?php
echo($_FILES["imgs"]["name"][$i]." ,  ".$_FILES["imgs"]["type"][$i]." ,  ".$_FILES["imgs"]["tmp_name"][$i]." ,  ".$_FILES["imgs"]["error"][$i]." ,  ".$_FILES["imgs"]["size"][$i]);
}
}
?>
<form class="" action="./upload.php" method="post" enctype="multipart/form-data">
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-default">Title</span>
</div>
<input type="text" class="form-control"  aria-describedby="inputGroup-sizing-default" required>
</div>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Beschreibung</span>
</div>
<textarea class="form-control" style="resize: none;"required></textarea>
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">€</span>
</div>
<input type="text" class="form-control"  required>
<div class="input-group-append">
<span class="input-group-text">,00</span>
</div>
<select class="custom-select" id="inputGroupSelect01" required>
<option value="FP">Festpreis</option>
<option value="VB">VB</option>
</select>
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">Upload</span>
</div>
<div class="custom-file">
<input type="file" name="imgs[]" multiple class="custom-file-input" id="inputGroupFile01" required>
<label class="custom-file-label" for="inputGroupFile01">Choose file</label>
</div>
</div>
<button type="submit" name="upload" class="btn btn-primary btn-lg btn-block">Hochladen</button>
</form>

您将$max定义为$_FILES["imgs"]的根元素的大小,而它应该是内部元素之一的大小,例如tmp_name

此外,请确保在循环时,不会从$max值中减去1,因为会丢失1个元素。

所以它应该是类似于的东西

$max = sizeof($_FILES['imgs']['tmp_name']);
echo $max."<br />";
for ($i = 0; $i < $max; $i++) {
echo "<br />".($_FILES["imgs"]["name"][$i]." ,  ".$_FILES["imgs"]["type"][$i]." ,  ".$_FILES["imgs"]["tmp_name"][$i]." ,  ".$_FILES["imgs"]["error"][$i]." ,  ".$_FILES["imgs"]["size"][$i]);
}

最后,请注意,session_start不能放在任何输出之后。它应该是php脚本中的第一件事,远远高于任何HTML标记,如<body>甚至<head>

最新更新