php - 为什么大小(数组)比它自己的数组大
问题描述
更详细地解释我的问题:上传多张图像时,我通过 sizeof ($ _ FILES ['imgs']) 从图像数组中获取大小;并用这个数字制作一个 for 循环来提供图片的详细信息。但我收到几个错误:警告:C:\xampp\htdocs\projetcs\en\upload.php 中的未定义数组键 3 在第 30 行。我不知道你为什么能帮助我?
网站代码:
<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>
推荐阅读
- r - 如何使用 For 循环在 3X450 中创建新变量
- node.js - 如何将带有参数的 curl 转换为在 node.js 中工作
- ruby-on-rails - Rails/Mongoid 与 Struct 的关系问题
- python - 我在使用 python 安装 pip 时遇到问题,该怎么办?
- javascript - 如何解决:输入不起作用/购物车问题
- apache-kafka - 有没有办法检测 FAILED kafka connect 任务
- spring-boot - 无法在 Spring Boot 中将肥皂请求与“Mulriref”绑定,如何解决?
- python - 如何在泰坦尼克号数据集中根据性别用平均年龄填充年龄?
- python - VBA如何使用部分参数在另一个函数中调用函数
- excel - Assigned arrays of doubles to XLScatter chart series' .XValues & .Values properties; however .XValues get converted to strings somehow. Why?