Php 如何从二维数组中的窗体接收图像?

Php 如何从二维数组中的窗体接收图像?,php,arrays,foreach,Php,Arrays,Foreach,我有一个上传产品的表单,一个用户可以上传多个产品,每个产品可以有多张图片(最多6张) 例如: 产品0=图1、图2、图3。 产品1=图1,图2。 以下是它在数组形式中的外观: Images[0][0] = image 1 Images[0][1] = image 2 Images[0][2] = image 3 Images[1][0] = image 1 Images[1][1] = image 2 问题是我没有从表单中接收到二维数组,我想我接收的是一个包含N个图像的数组,就像这样 Image

我有一个上传产品的表单,一个用户可以上传多个产品,每个产品可以有多张图片(最多6张)

例如: 产品0=图1、图2、图3。 产品1=图1,图2。 以下是它在数组形式中的外观:

Images[0][0] = image 1
Images[0][1] = image 2
Images[0][2] = image 3
Images[1][0] = image 1
Images[1][1] = image 2
问题是我没有从表单中接收到二维数组,我想我接收的是一个包含N个图像的数组,就像这样

Images[0]
Images[1]
Images[2]
Images[3]
Images[4]
这使得无法将图像分配给产品。 我正在接收带有
$\u文件['photo']['name']
的图像,并在数组中循环

发送图像的表单如下

<input type="file" class="form-control-file" id="photo" name="photo[]" onchange="return fileValidation()" value="Photo" multiple="multiple" required/>

我不知道是否需要添加name=“photo[][]”或类似的内容


实际上上传图片不是问题,这部分工作正常,问题会在稍后出现,当我们需要将每个图片添加到相应的产品中时,如果我们在单个阵列中接收到一组图像,就不可能知道每个产品发送了多少图像。

也许可以使用下标将图像集与每个产品关联起来:

<form>
    <input type="file" name="product[0][image][]" ...>
    <input type="file" name="product[1][image][]" ...>
</form>

上传文件时,PHP
$\u files
不是一个文件数组,而是一个类似

Array(
    [name] => Array
        (
            [0] => facepalm2.jpg
            [1] => facepalm3.jpg
        )

    [type] => Array
        (
            [0] => image/jpeg
            [1] => image/jpeg
        )
        ...
)
你应该像这样访问它

foreach($_FILES["photo"]["tmp_name"] as $index => $temp_name){
    echo $_FILES["photo"]["name"][$index];
    echo $_FILES["photo"]["size"][$index];
}

您是否只有一个文件输入?您希望它如何区分图像所属的产品?或者您有多个文件输入?我有很多输入,通过Js函数我添加了更多输入,因此图像输入。Hello。我收到警告:$v['name']中的字符串偏移量'name'非法,我不知道v的索引'name'是否不存在。您好,请尝试
print\r($FILES)
查看结构。我的意思是,问题不在于打印名称,当我尝试循环$v['name']时,它在第二个foreach中最后,它只需向输入添加一个额外的索引即可工作。谢谢谢谢,但是我怎么能在每个索引中都有这些图像,例如$_FILES[“photo”][“name”][$index];产品1,然后是$_文件[“photo”][“name”][$index];产品2的名称。@OscarVazquez请参阅
foreach($_FILES["photo"]["tmp_name"] as $index => $temp_name){
    echo $_FILES["photo"]["name"][$index];
    echo $_FILES["photo"]["size"][$index];
}