PHP 递归遍历文件夹到多维数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 递归遍历文件夹到多维数组相关的知识,希望对你有一定的参考价值。

<?php

error_reporting(E_ALL);
header('Content-Type: text/plain; charset=utf-8');

$dir = dirname(__FILE__).'/';
$tree = dir_tree($dir);
print_r($tree);

function dir_tree($dir)
{
	static $tree = array();
	static $child = false;
	
	// Detect the current branch to append files/directories to
	if ($child !== false && isset($tree[$child]))
	{
		$branch =& $tree[$child];
	}
	else
	{
		$branch =& $tree;
	}
	
	// Force trailing slash on directory
	$dir = rtrim($dir, '/').'/';
	$dirlen = strlen($dir);
	
	// Find files/directories
	$items = glob($dir.'*');
	
	foreach($items as $key => $item)
	{
		// Get basename
		$base = pathinfo($item, PATHINFO_BASENAME); //substr($item, $dirlen);
		
		// always skip dot files
		if ($base[0] == '.') continue;
		
		// If file
		if(is_file($item) && is_readable($item))
		{
			$branch[] = $base;
			$child = false;
			continue;
		}
		
		// If directory
		if(is_dir($item) && is_readable($item))
		{
			// Dirty hack to get around PHP's numerical index rules
			if (ctype_digit($base))
				$base = '~'.$base;
			
			$branch[$base] = array();
			$child = $base;
			dir_tree($item);
			continue;
		}
	}
	
	// Only return from the root call
	if ($child === false)
		return $tree;
}

以上是关于PHP 递归遍历文件夹到多维数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP 递归遍历多维数组

php无限极分类递归写入多维数组的方法

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

js递归(二)——合并多维数组

求教一个JQ 遍历 生成多维数组的问题

php中多维数组的问题