多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP类搜索定位目录树的具体实现方式解析

时间:2019-02-14 17:30:04 [来源]:郑州PHP培训学校

   PHP类搜索定位目录树的具体实现方式解析

  大家现在也许对PHP语言比较感兴趣,因为它能够帮助我们很轻松的建设一个功能强大的网站。今天我们将向大家介绍的是有关PHP类搜索定位目录树的方法。大多数时候,在嵌套的PHP结 构里进行迭代需要你写出能够一个按顺序穿过层级、并检查其中每一个元素的递归函数。
  但是递归函数是一个很复杂而且杂乱的东西,大多数开发者(包括我自己) 并不是真正喜欢使用它们。这就是为什么当我的上一个项目需要为一个单独文件扫描一个目录层级时(一个典型的递归函数任务),我甚至没有考虑过要循环自己的 代码。我取而代之地直接使用了PEAR和它的File_Find类,免除了我搜索多层目录结构的痛苦。
  File_Find类是为了能让你真 正做好两件事情而设计的。第一,它可以让你扫描一个目录树,然后将其转换成为PHP结构——一个嵌套的数组——它反映了原始层级的父子关系。第二,它可以 让你在一个目录树下搜索一个或多个类型相匹配的文件。这种类型可以是一个简单的字符串,也可以是一个复杂的Perl规则的表达式;File_Find能够 处理上述两种中的任意一种格式,并将返回一个包括了每一对的详细文件和路径信息的数组。
  一开始,手动安装程序包,你可以下载它,然后将其内容提取到PEAR根目录下,也可以利用PEAR安装程序。
  接下来,创建以下PHP脚本(列表A),并将它保存在你的Web服务器的文件根目录下:
  PHP类搜索定位目录树列表A
  < ?php
  // include class
  include(”Find.php”);
  // initialize finder
  $finder = new File_Find();
  // read directory tree and print
  $tree = $finder->mapTree(”/tmp”);
  print_r($tree);
  ?>
  在此,我初始化了一个新的File_Find()对象, 并用一个目录路径调用其mapTree()方法。mapTree()方法读取指定的目录,然后产生它的一个两元素的层级结构“数组表(array map)”。此数组中第一个元素列出了所找到的所有目标目录下的子目录,而第二个元素列出了找到的所有文件。然后就有可能扫描这些序列,在应用程序中使用 它们了——例如,重建目录树,或者在自定义标准的基础上筛选文件和目录。
  探讨应当如何提高PHP递归效率
  PHP递归效率比正常的需求要低将近3倍的差距,那么我们如何才能在编码中来提高PHP递归效率呢?希望大家能同过本文介绍的内容初步了解。
 分享我们在实际代码编程中,会发现PHP递归效率是非常低下的,对于程序员来说,他们必须要很好的处理PHP的递归。在这篇文章中我们具体向大家介绍了PHP递归效率的提高方法,希望对又需要的朋友有所帮助。
  最近写了一个快速排序的算法,发现PHP中的递归效率不能一刀切,在各种不同的服务器中,可能会表现不一样。
  function qsort(&$arr)
  {
  _quick_sort($arr, 0, count($arr) - 1);
  }
  /**
  * 采用递归算法的快速排序。
  *
  * @param array $arr 要排序的数组
  * @param int $low 最低的排序子段
  * @param int $high 最高的排序字段
  */
  function _quick_sort(&$arr, $low, $high)
  {
  $low_data = $arr[$low];
  $prev_low = $low;
  $prev_high = $high;
  while ($low < $high)
  {
  while ($arr[$high] >= $low_data && $low < $high) {$high--;
  }
  if ($low < $high) {
  $arr[$low] = $arr[$high];
  $low++;
  }
  while ($arr[$low] <= $low_data && $low < $high) {$low++;
  }
  if ($low < $high) {
  $arr[$high] = $arr[$low];
  $high--;
  }
  }
  $arr[$low] = $low_data;
  if ($prev_low < $low) {
  _quick_sort($arr, $prev_low, $low);
  }
  if ($low + 1 < $prev_high) {
  _quick_sort($arr, $low + 1, $prev_high);
  }
  }
  function quick_sort(&$arr)
  {
  $stack = array();
  array_push($stack, 0);
  array_push($stack, count($arr) -1);
  while (!empty($stack)) {
  $high = array_pop($stack);
  $low = array_pop($stack);
  $low_data = $arr[$low];
  $prev_low = $low;
  $prev_high = $high;
  while ($low < $high)
  PHP静态变量static的示例代码演示
  PHP静态变量static提供了一种处理递归函数的方法,我们在实际操作中必须确保有充分的方法来终止递归。下面就介绍了相关的使用方法。  分享在PHP中的变量范围里,有一个非常重要的变量—PHP静态变量static。在接下来的这篇文章中,我们将会以具体的代码示例为大家详细介绍有关PHP静态变量static的主要用法,希望对大家有所帮助。
  看看下面的例子:
  例子 演示需要PHP静态变量static的例子
  < ?PHP
  function Test(){
  $w3sky = 0;
  echo $w3sky;
  $w3sky++;
  }
  ?>
  PHP中$_SERVER的详细资料整理
  PHP函数stristr()的具体使用方式介绍
  PHP代码性能优化的技巧讲解
  如何运用PHP函数preg_match_all测试正则
  如何使用PHP运算符==比较字符串
  本函数没什么用处,因为每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有作用,因为一旦退出本函数则变量 $w3sky 就不存在了。要写一个不会丢失本次计数值的计数函数,要将变量 $w3sky 定义为静态的:
  例子 使用PHP静态变量static的例子
  < ?PHP
  function Test(){
  static $w3sky = 0;
  echo $w3sky;
  $w3sky++;
  }
  ?>
  现在,每次调用 Test() 函数都会输出 $w3sky 的值并加一。
 

上一篇:PHP的cURL库简单和有效地抓网页

下一篇:PHP函数可变参数列表的具体实现方法介绍