【问题标题】:why array_push don't work inside foreach loop为什么 array_push 在 foreach 循环中不起作用
【发布时间】:2017-12-08 11:45:49
【问题描述】:

我有这个文件更新代码,我需要将文件路径放在响应数组中。但我的数组是空的:

    $response = array();
    if (file_exists($directorSerie)) {
        if(is_array($_FILES)) {     
            foreach ($_FILES['fileToUpload']['name'] as $name => $value){
                if(is_uploaded_file($_FILES['fileToUpload']['tmp_name'][$name])) {
                    $sourcePath = $_FILES['fileToUpload']['tmp_name'][$name];
                    $targetPath = $directorSerieString.$_FILES['fileToUpload']['name'][$name];
                    array_push($response, $targetPath);                             


                    if(move_uploaded_file($sourcePath,$targetPath)) {
                        $success = "success";                   

                    }
                }
            }

        }
    }
exit(json_encode($response));

【问题讨论】:

  • 您是否在每个 ifforeach 块的顶部放置了一条日志记录语句以确保它被输入?您是否尝试过记录 $targetPath 以查看是否符合您的预期?
  • 更简单(更常见)'array_push' 语法:$response[] = $targetPath;
  • 使用 $response[] = $targetPath;只需给出相同的结果:空数组
  • 你能详细说明一下“日志记录”的事情吗?

标签: php foreach array-push


【解决方案1】:

array_push() 适用于 foreach。 我建议你把 dubug 找出错误在哪里。 您可以将 var_dump($var) 放在代码级别之后,如下所示:

if (file_exists($directorSerie)) {
  var_dump($directorSerie);

下一步...

if(is_array($_FILES)) {  
  var_dump($_FILES)

下一个

foreach ($_FILES['fileToUpload']['name'] as $name => $value){
   var_dump( $name ,$value);

直到你发现...

【讨论】:

  • 一个值得观察的评论,而不是回答材料。
  • 感谢您的回答。代码有效,文件按原样上传,仅在控制台中我得到一个空数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-28
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
相关资源
最近更新 更多