• 技术文章 >后端开发 >php教程

    Linux下的编程 PHP高级技巧全放送(二)_PHP

    2016-06-01 12:25:19原创406
    Linux技巧


      四、PHP和文件系统的维护
      
      PHP中有许多与文件系统有关的函数,这些函数不仅可以打开文件,还可以显示目录中的内容、移动文件和其他一些功能,许多人甚至用PHP开发基于互联网的文件资源管理器。
      
      关于文件路径的解释:在Windows中,可以在路径中使用/和符号,而在其他的操作系统中只能使用/符号。出于一致性的缘故,我们统一使用/符号。
      
      下面的脚本样例可以显示一个目录清单,注释已经包含在代码中:
      
        $dir_name = "/home/me/";
      /* 创建一个句柄,其值是打开一个给定目录的结果*/
      $dir = opendir($dir_name);
      /* 建立一个文字块,用以放置列表元素(文件名字)*/
      $file_list = "";
      /*关闭打开的目录,结束PHP模块*/
      closedir($dir);
      ?>
      
      
      
      Directory Listing
      
      
      
      

    Files in:


      
      
      
      
      
      好了,我们已经得到了一个目录清单。需要注意的是,要读取一个文件(稍后我们将进行讲解)或目录的内容,PHP运行的系统上的用户必须至少有读取文件的权限。
      
      下面是一个如何拷贝文件的例子:
        $original = "/home/me/mydatabasedump";
      $copied = "/archive/mydatabasedumo_1010";
      /* 使用copy()函数拷贝原始文件,如果拷贝没有完成则会显示一个错误信息*/
      @copy($original, $copied) or die("Couldn't copy file.");
      ?>
      
      这个例子是一个文件备份系统的原型。在这段脚本运行时,它把文件拷贝到一个不同的位置进行保存。稍微修改一下守护程序,就可以在一天中你指定的时刻执行它,而无需用户的干预。
      
      假定你在系统上安装了Lynx,可以创建一个守护程序的条目访问这个文件,访问这个文件会运行这个脚本并建立一个拷贝文件,下面的例子将在上午5点钟运行这个脚本,然后关闭Lynx:
      
      0 5 * * * [username] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1
      
      如果运行的是CGI版本的PHP,可以跳过Lynx部分,而直接调用二进制文件:
      
      0 5 * * * [username] php /path/to/copyfile.php 1>/dev/null 2>&1
      
      五、丰富的数组函数
      
      PHP 4.0中新添加了30个与组数有关的函数,其中一些常见的函数可以判断一个数组中是否包含某个元素,对一个数组中的元素进行计数,添加或删除数组中的元素或者对数组中的元素进行排序。
      
      如果有一个很大的数组,而你需要找出其中是否包含一个特定的元素,就可以使用in_array()。下面的例子将显示“Not found in this array”,因为在一个名字为$namesArray的数组中查找Albert,而在$namesArray数组中不存在这样一个元素。
        $lookingFor = "Albert";
      if (in_array($lookingFor, $namesArray)) {
      echo "You've found it!";
      } else {
      echo "Not found in this array!";
      }
      ?>
      
      如果把$lookingFor的值改为Mary,就会得到“You've found it!”的信息,因为Mary是$namesArray数组中的一个元素。
      
      如果要对一个数组中的元素个数进行计数,只要简单地使用count()函数即可:
        $count = count($namesArray); ?>
      
      返回的$count的值为7。
      
      可以在一个数组的开头或结尾处添加元素,还可以使用array_merge()来建立一个包含二个或更多数组中元素的新数组,合并时,元素的顺序会按指定的顺序排列,如果原来的数组是被排过序的,在合并后需要对它重新排序。
      
      我们可以首先利用array_push()在数组的结尾处添加一个元素:
        $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
      /* 向数组中添加元素 */
      array_push($fruitArray, "grape", "pineapple", "tomato");
      /*显示每个元素及其序号*/
      while (list($key,$value) = each($fruitArray)) {
      echo "$key : $value
    ";
      }
      ?>
      
      运行上面的程序将得到下面的结果:
      0 : apple
      1 : orange
      2 : banana
      3 : kiwi
      4 : pear
      5 : grape
      6 : pineapple
      7 : tomato
      
      如果需要在数组的开头添加元素,其代码与上面的代码差不多,唯一的不同之处是需要用array_unshift()代替array_push()。
        /* 建立一个数组*/
      $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
      /* 向数组中添加元素*/
      array_unshift($fruitArray, "grape", "pineapple", "tomato");
      /* 显示每个元素及其序号*/
      while (list($key,$value) = each($fruitArray)) {
      echo "$key : $value
    ";
      }
      ?>
      
      运行上面的程序将得到下面的结果:
      0 : grape
      1 : pineapple
      2 : tomato
      3 : apple
      4 : orange
      5 : banana
      6 : kiwi
      7 : pear
      
      array_merge()函数可以把二个或更多的数组合并为一个数组。
        $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
      /*/建立第二个数组*/
      $vegArray = array("carrot", "green beans", "asparagus", "artichoke", "corn");
      /*把这二个数组合并为一个数组*/
      $goodfoodArray = array_merge($fruitArray, $vegArray);
      /* 显示每个元素及其序号*/
      while (list($key,$value) = each($goodfoodArray)) {
      echo "$key : $value
    ";
      }
      ?>
      
      运行上面的脚本将得到下面的结果:
      0 : apple
      1 : orange
      2 : banana
      3 : kiwi
      4 : pear
      5 : carrot
      6 : green beans
      7 : asparagus
      8 : artichoke
      9 : corn
      
      现在我们已经掌握了如何添加元素和合并数组,我们再来看看如何从一个数组中删除元素。从一个数组的末尾删除一个元素可以使用array_pop()函数,使用array_shift()函数可以从一个数组的开头删除一个元素。尽管使用array_pop()或 array_shift()从数组中删除了一个元素,你还可以把这个元素当作一个变量来使用。
      
      使用array_pop()从一个数组的末尾删除一个元素:
        /*建立一个数组*/
      $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
      /* 从数组的末尾删除一个元素*/
      $popped = array_pop($fruitArray);
      /* 显示删除后数组的内容和你删除的元素*/
      while (list($key,$value) = each($fruitArray)) {
      echo "$key : $value
    ";
      }
      echo "
    and finally, in $popped: $popped";
      ?>
      
      运行上面的脚本会得到下面的结果:
      0 : apple
      1 : orange
      2 : banana
      3 : kiwi
      and finally, in $popped: pear
      
      我们再来讨论一个从一个数组的末尾删除元素的例子:
        /* 建立一个数组*/
      $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
      /*从一个数组的开始删除一个元素*/
      $shifted = array_shift($fruitArray);
      /* 显示删除后数组的内容和你删除的元素*/
      while (list($key,$value) = each($fruitArray)) {
      echo "$key : $value
    ";
      }
      echo "
    and finally, in $shifted: $shifted";
      ?>
      
      运行上述脚本会得到如下的显示结果:
      0 : orange
      1 : banana
      2 : kiwi
      3 : pear
      and finally, in $shifted: apple
      
      另外还有几个函数可以对数组中的元素进行排序,但在这里我们将只简要介绍基本的排序函数,说明排序的过程:
        $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
      /* 对数组进行排序*/
      sort($fruitArray);
      /*显示每个元素及其序号*/
      while (list($key,$value) = each($fruitArray)) {
      echo "$key : $value
    ";<
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP中register_globals引发的问题_PHP 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 设计API接口时,要注意这些地方!• PHP网站常见一些安全漏洞及防御方法• 一个分页的论坛_PHP教程• php 中文处理函数集合_php技巧• PHP编程中的__clone()方法使用详解_PHP
    1/1

    PHP中文网