【问题标题】:How to get single value from array after using print_r使用 print_r 后如何从数组中获取单个值
【发布时间】:2018-09-09 10:42:16
【问题描述】:

我有一个数组$_FILES,它可以存储多个图像。

当我在这个数组中存储两个图像后使用print_r($_FILES) 时,它会给出以下输出:

Array ( [IMG_20170304_224950_jpg] => Array ( [name] => IMG_20170304_224950.jpg [type] => image/jpeg [tmp_name] => C:\wamp64\tmp\php4584.tmp [error] => 0 [size] => 4098228 ) [IMG_20170305_075610_jpg] => Array ( [name] => IMG_20170305_075610.jpg [type] => image/jpeg [tmp_name] => C:\wamp64\tmp\php4602.tmp [error] => 0 [size] => 5314040 ) )

在这我想echo两张图片。


这就是我的代码的样子:

index.php

     <input id="avatar" type="file" name="avatar[]" multiple />
     <button id="upload" value="Upload" type="button">upload</button> 
    <div class="preview">
    </div>

   <div class="return_php"></div>

  <script   src="https://code.jquery.com/jquery-3.1.0.min.js" ></script>
 <script>
 $(document).ready(function(){
    var form_data = new FormData(); 
    var number = 0;

    /* WHEN YOU UPLOAD ONE OR MULTIPLE FILES */
    $(document).on('change','#avatar',function(){
        console.log($("#avatar").prop("files").length);
        len_files = $("#avatar").prop("files").length;
        for (var i = 0; i < len_files; i++) {
            var file_data = $("#avatar").prop("files")[i];
            form_data.append(file_data.name, file_data);
            number++;
            var construc = '<img width="200px" height="200px" src="' +  window.URL.createObjectURL(file_data) + '" alt="'  +  file_data.name  + '" />';
            $('.preview').append(construc); 
        }
    }); 

    /* WHEN YOU CLICK ON THE IMG IN ORDER TO DELETE IT */
    $(document).on('click','img',function(){

        var filename = $(this).attr('alt');
        var newfilename = filename.replace(/\./gi, "_");
        form_data.delete($(this).attr('alt'))
        $(this).remove()

    });

    /* UPLOAD CLICK */
    $(document).on("click", "#upload", function() {
        $.ajax({
                    url: "target.php",
                    dataType: 'script',
                    cache: false,
                    contentType: false,
                    processData: false,
                    data: form_data,                         // Setting the data attribute of ajax with form_data
                    type: 'post',
                    success: function(data){
                        $('.return_php').html(data);
                    }
           })
    })
});

target.php

<?php


 var_dump($_FILES);
 print_r ($_FILES);

foreach ($array as $key => $image) {
  /* Now you can get each image name */
 echo $image['name'];
 }
 ?>

【问题讨论】:

  • 但是您要打印什么?图片名称?带有图像文件的
  • 我要打印图片名称

标签: php jquery arrays ajax


【解决方案1】:

您可以尝试使用此代码打印图像名称:

foreach ($array as $key => $image) {
  /* Now you can get each image name */
  echo $image['name'];
}

编辑:这是一个上传文件示例

index.html

<form action="upload.php" method="POST" enctype="multipart/form-data">
    <label for="fileToUpload">Select image to upload:</label>
    <input type="file" name="uploadFile" id="fileToUpload">
    <input type="submit" value="Upload File" name="submit">
</form>

上传.php

if (isset($_FILES['uploadFile'])) {
  print "Your file information:";
  var_dump($_FILES['uploadFile']);
} else {
  print "You need to upload a file.";
}

【讨论】:

  • 没问题,如果可以的话,很高兴为您提供帮助。
  • 如果我要上传图片怎么办?
  • 您需要使用 制作 HTML 表单,并使用 $_FILES 数组在您的 php 中上传图片。尝试在google中搜索“用php上传文件”,很简单。
  • 先生,您在吗?如果看到此评论,请在下面查看我的代码并告诉我如何上传文件,因为我无法使用输入名称。我不太懂ajax,我应该用form_data代替头像吗
  • 您不需要使用 Ajax,尝试在表单中添加 &lt;input type="file" name="uploadFile" /&gt;,然后在您的 php 代码中,您可以使用 $_FILES['uploadFile'] 访问文件,将 var_dump($_FILES); 添加到查看变量。
【解决方案2】:

你可以试试这个

foreach($array as $val)
{ 
    echo $val['name'];
}

【讨论】:

  • 这可能是问题的答案。但我同意这个问题本身并不清楚,缺乏基本的php知识。请详细解释为什么您的解决方案可能适用于@nitin-verma,并尝试解释 print_r 的作用和 $_FILES 是什么。所有这些信息都可以帮助他了解问题所在。
猜你喜欢
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多