<code>function foreach_dir($filename,$dir){ if(!is_dir($filename)) return; $r = opendir($filename); while($s = readdir($r)){ if($s != '.' && $s != '..'){ echo $s.'<br>'; // $dir .= $s.'<br>'; foreach_dir($filename.'/'.$s,$dir); } } return $dir; } echo foreach_dir('templates','');</code>
输出正确
default
images
index.html
top.jpg
menu
document.gif
documents.gif
index.html
sdocument.gif
sdocuments.gif
stylesheet.css
template.htm
subsilverlike
如果换成这样
<code>function foreach_dir($filename,$dir){ // $dir = ''; // echo $filename; if(!is_dir($filename)) return; $r = opendir($filename); while($s = readdir($r)){ if($s != '.' && $s != '..'){ // echo $s.'<br>'; $dir .= $s.'<br>'; foreach_dir($filename.'/'.$s,$dir); } } return $dir; } echo foreach_dir('templates','');</code>
输出
default
subsilverlike
我这是把 echo $s.'
';换成了$dir .= $s.'
';显示路径就不完全了,哪里错了?
回复内容:
<code>function foreach_dir($filename,$dir){ if(!is_dir($filename)) return; $r = opendir($filename); while($s = readdir($r)){ if($s != '.' && $s != '..'){ echo $s.'<br>'; // $dir .= $s.'<br>'; foreach_dir($filename.'/'.$s,$dir); } } return $dir; } echo foreach_dir('templates','');</code>
输出正确
default
images
index.html
top.jpg
menu
document.gif
documents.gif
index.html
sdocument.gif
sdocuments.gif
stylesheet.css
template.htm
subsilverlike
如果换成这样
<code>function foreach_dir($filename,$dir){ // $dir = ''; // echo $filename; if(!is_dir($filename)) return; $r = opendir($filename); while($s = readdir($r)){ if($s != '.' && $s != '..'){ // echo $s.'<br>'; $dir .= $s.'<br>'; foreach_dir($filename.'/'.$s,$dir); } } return $dir; } echo foreach_dir('templates','');</code>
输出
default
subsilverlike
我这是把 echo $s.'
';换成了$dir .= $s.'
';显示路径就不完全了,哪里错了?
你熟读一下你程序的逻辑就知道了,虽然你在循环中把$dir
传递到了foreach_dir
中进行递归,但是你没有获取和处理foreach_dir
返回的$dir
,所以最后你得到的也就是根目录和其下一级文件,没有更进的目录了。
程序应该是这样的
<code>function foreach_dir($filename, $dir) { if(!is_dir($filename)) return ''; $r = opendir($filename); while ($s = readdir($r)) { if($s != '.' && $s != '..') { $dir .= $s.'<br>'; $dir .= foreach_dir($filename . '/' . $s, $dir); } } return $dir; } echo foreach_dir('templates','');</code>
因为你把echo都注掉了,default和subsilverlike应该都是templates目录下的第一级子目录,是由语句$dir .= $s.'
'拼接出来了,实际上除了第一次调用函数外没有任何内容被打印,所以就是这个结果了。你可以把你的第二段代码的最后几句修改成:
<code> echo $dir; } foreach_dir('templates','');</code>
应该就能看到更多结果了。
不过两段代码的逻辑都很不清楚,我写一段你看一下能明白不。
<code>$details = []; function eachDir($dir, &$results) { if (! is_dir($dir)) return false; //不是目录就不需要处理了 $hd = opendir($dir); while($file = readdir($hd)) { if ($file == '.' || $file == '..') continue; //忽略这两个目录 $file = $dir . '/' . $file; //拼接完整的文件名或路径名 $results[] = $file; //放到遍历结果中 if (is_dir($file)) eachDir($file, $results); //如果是目录,递归处理 } return true; } eachDir('templates', $details); //$details是通过传址的方式处理的 print_r($details); /** * 我期望的输出类似 * templates/default * templates/detault/images * ... */</code>
这个代码没测试。
不建议在函数中使用echo,就算是练习也一样,因为echo出来的东西就无法被继续处理了,所以应该尽量避免。同时echo也会影响你的思维方式,先处理再输出的时候,你的注意力可以集中在当前的步骤上,而边处理边输出相当于一心二用。

What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

PHP and Python are both high-level programming languages that are widely used in web development, data processing and automation tasks. 1.PHP is often used to build dynamic websites and content management systems, while Python is often used to build web frameworks and data science. 2.PHP uses echo to output content, Python uses print. 3. Both support object-oriented programming, but the syntax and keywords are different. 4. PHP supports weak type conversion, while Python is more stringent. 5. PHP performance optimization includes using OPcache and asynchronous programming, while Python uses cProfile and asynchronous programming.

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

PHP remains important in the modernization process because it supports a large number of websites and applications and adapts to development needs through frameworks. 1.PHP7 improves performance and introduces new features. 2. Modern frameworks such as Laravel, Symfony and CodeIgniter simplify development and improve code quality. 3. Performance optimization and best practices further improve application efficiency.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP type prompts to improve code quality and readability. 1) Scalar type tips: Since PHP7.0, basic data types are allowed to be specified in function parameters, such as int, float, etc. 2) Return type prompt: Ensure the consistency of the function return value type. 3) Union type prompt: Since PHP8.0, multiple types are allowed to be specified in function parameters or return values. 4) Nullable type prompt: Allows to include null values and handle functions that may return null values.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.