如何将递归函数的答案放入数组(PHP)中?

Posted

技术标签:

【中文标题】如何将递归函数的答案放入数组(PHP)中?【英文标题】:How to put the answer from recursive function in an array (PHP)? 【发布时间】:2021-12-25 04:58:01 【问题描述】:

那里,

我尝试了很多次将递归函数的答案放入一个数组 ($result) 中,但我做不到。代码如下:

function readDirs($path , $result = [])


    $dirHandle = opendir($path);
    while($item = readdir($dirHandle)) 
    
       $newPath = $path."/".$item;
       if(is_dir($newPath) && $item != '.' && $item != '..') 
        
         readDirs($newPath, $result);
       
       elseif(!is_dir($newPath) && $item != '.DS_Store' && $item != '.' && $item != '..')
        
          echo "$path<br>";
          $result[] = $path;
          return $result;
       
    

            
$path =  "/Users/mycomputer/Documents/www/Photos_projets";
$results = array();
readDirs($path, $results);

你能帮我把路径放在数组中吗,因为我稍后在我的代码中需要它们? 谢谢

【问题讨论】:

最明显的是你没有使用readDirs() 来分配变量。一个好的第一步是$result = readDirs($path); 尝试通过将readDirs($path , $result = []) 更改为readDirs($path , &amp;$result)$results 数组作为引用传递。那你就不需要退货了。外部$results 将在函数调用后填充。 【参考方案1】:

我无法理解您的问题,但可以肯定这可能会有所帮助

 function readDirs($path)

    $result = [];
    $dirHandle = opendir($path);
    while($item = readdir($dirHandle)) 
    
       $newPath = $path."/".$item;
       if(is_dir($newPath) && $item != '.' && $item != '..') 
        
         $result[] = readDirs($newPath);
       
       elseif(!is_dir($newPath) && $item != '.DS_Store' && $item != '.' && $item != '..')
        
          echo "$path<br>";
          $result[] = $path;
          return $result; //im not sure this return statement you implement is needed try it to remove it if this does not work
       
    
   return $result;


$path =  "/Users/mycomputer/Documents/www/Photos_projets";
$result = readDirs($path);
var_dump($result);

试一试并回复。

【讨论】:

嗨,我想说谢谢你的回答,它对我帮助很大。再见。 很高兴,但如果您的问题得到解答,请关闭问题。

以上是关于如何将递归函数的答案放入数组(PHP)中?的主要内容,如果未能解决你的问题,请参考以下文章

PHP递归函数将多维数组转换为xml

将嵌套数组转换为嵌套 html 块的递归 php 函数

如何在 PHP 中循环遍历多维数组并按名称递归删除键?

PHP 递归函数 - 如何避免使用全局变量

使用递归函数获取多维php数组的新值和键

在 PHP 中递归创建多维数组