Php 两个循环和移动上传的文件,我有点困惑

Php 两个循环和移动上传的文件,我有点困惑,php,arrays,loops,session,foreach,Php,Arrays,Loops,Session,Foreach,有两页。第1页包含: 第1页: $_SESSION['temporary'][$i] = $_FILES['img']['tmp_name'][$i]; $_SESSION['image'][$i] = $_FILES['img']['name'][$i]; 第2页包含: 第2页: for($i=0;$i<count($_SESSION['temporary']);$i++) { echo '<br/>'.$_SESSION['temporary'][$i]; }

有两页。第1页包含:

第1页:

$_SESSION['temporary'][$i] = $_FILES['img']['tmp_name'][$i];
$_SESSION['image'][$i] = $_FILES['img']['name'][$i];
第2页包含:

第2页:

for($i=0;$i<count($_SESSION['temporary']);$i++)
{
    echo '<br/>'.$_SESSION['temporary'][$i];
}

for($i=0;$i<count($_SESSION['image']);$i++)
{
    $path = $pre_path.'/'.basename($_SESSION['image'][$i]);
    echo '<br/>'.$_SESSION['image'][$i];
}
我不能在第二个循环中使用此函数。因为它不会包含

$\会话['temporary'][$i]

从第一个循环开始

我为什么要这样写剧本? 因为我的脚本按以下步骤工作:

  • 第0页:选择类别和属性,并上载图像
  • 第1页:显示所选类别和base64编码的图像
  • 第2页:将所有内容插入数据库
  • 我真的不想做这件事。如果有人帮助我,我会非常高兴,当然我会接受答案并竖起大拇指。 如果您觉得更简单,可以改用foreach循环:

    foreach($_SESSION['temporary'] as $temporary)
    {
        echo '<br/>'.$temporary;
    }
    
    foreach($_SESSION['image'] as $image)
    {
        $path = $pre_path.'/'.basename($image);
        echo '<br/>'.$image;    
    }
    
    foreach($\u会话['temporary']作为$temporary)
    {
    回显“
    ”。$temporary; } foreach($\u会话['image']作为$image) { $path=$pre_path.'/'.basename($image); 回显“
    ”。$image; }
    第2页上,您可以上传如下文件:

    move_uploaded_file($_SESSION['temporary'][$i], $path);
    
    $num_of_files = count($_SESSION['temporary']); // or count($_SESSION['image'])
    for($i=0; $i < $num_of_files; $i++){
        echo '<br/>'.$_SESSION['temporary'][$i];
        echo '<br/>'.$_SESSION['image'][$i];
        $path = $pre_path.'/'.basename($_SESSION['image'][$i]);
        move_uploaded_file($_SESSION['temporary'][$i], $path);
    }
    
    $num_of_files=count($_SESSION['temporary']);//或计数($\u会话['image'])
    对于($i=0;$i<$num\u文件;$i++){
    回显“
    ”。$\u会话['temporary'][$i]; 回显“
    ”。$\u会话['image'][$i]; $path=$pre_path.'/'.basename($_会话['image'][$i]); 移动上传的文件($\会话['temporary'][$i],$path); }

    显然我错了,你不能上传那样的文件

    move\u upload\u file()
    函数检查以确保文件名指定的文件是有效的上载文件(意味着它是通过PHP的HTTP POST上载机制上载的)。如果文件有效,它将被移动到目标指定的文件名


    $\u FILES
    数组仅保存有关此请求中上载的文件的信息。如果不将该文件保存在同一请求中的其他位置,PHP将在请求结束时删除该文件。您不能简单地将
    $\u文件['uploadfoto']['tmp\u name']
    保存到会话中,并期望该文件稍后仍在那里,因为它不会在那里。

    很好,您已经找到了循环的问题,谢谢。但文件没有上传:(没有出现错误。但我做了类似的操作:“如果(移动上传的文件($\u会话['temporary'][$I],$path)){echo'上传';}其他{echo'上传失败';}”,现在显示“上传失败”@WojciechGlapa我已经更新了我的答案。请看解释。非常感谢!我已经接受了答案。将临时文件移动到另一个文件夹的功能是什么?也许你知道?@WojciechGlapa
    move\u uploaded\u file()
    是上传文件的唯一可用功能,即将临时文件从预定目录移动到用户指定目录。