【问题标题】:Foreach loop processing only one elementForeach 循环只处理一个元素
【发布时间】:2019-02-01 02:27:53
【问题描述】:

我有一个名为 plugin_loader() 的函数。这个函数所做的工作是这样的。它正在使用 glob() 在名为“plugins”的文件夹中搜索。之后,它应该从创建的数组元素中删除不必要的“../../”。 所以为此我做了foreach循环。但是由于某种原因,当我执行 print_r() 以查看我是否以正确的方式显示它只显示最后一个文件时,如下所示:'/assets/plugins/test_plugin1.php'。但我有两个文件“helloworld.php”和“test-plugin1.php”。为什么它不从两个文件而不是一个文件中删除“../../”? P.S 我确实检查了这两个文件是否都被检测到。

我尝试使用 count() 查看数组中有多少元素,然后在 foreach 中调用 while 循环。但这只是给了我两个相同的输出。

function Plugin_Loader()
  {
    $scanned_files = glob("../../assets/plugins/*.php");
      foreach ($scanned_files as $file) {
       $file_loc = str_replace('../', ' ', $file);
  print_r($file_loc);
     }
  }

【问题讨论】:

  • $file_loc初始化为数组
  • 如果不将其初始化为数组,它将是一个变量。而一个变量只能存储一个值
  • $file_loc[] = str_replace('../', ' ', $file);
  • @AbraCadaver,谢谢。
  • 谢谢你所做的一切

标签: php


【解决方案1】:

你应该初始化$file_loc

function Plugin_Loader()
  {
    $scanned_files = glob("../../assets/plugins/*.php");
      foreach ($scanned_files as $file) {
       $file_loc[] = str_replace('../', ' ', $file);
      print_r($file_loc);
     }
  }

【讨论】:

  • 第一个不行。 $file_loc 将在您为其分配字符串时变为字符串。必须使用第二个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 2014-05-22
  • 2012-07-27
  • 2018-07-31
  • 2011-07-03
  • 2014-12-29
  • 2012-03-27
相关资源
最近更新 更多