本文实例为大家分享了PHP递归统计系统中代码行数的具体代码,供大家参考,具体内容如下
1、统计代码行数,必然用到的两个关键的知识点:函数递归以及文件读取。
函数递归无非就是在函数的代码中调用本身的函数名,以此形成递归循环
- function A($param){
- if('condition')
- A($param_son);
- else
- return $result;
- }
在文件读取中,有很多读取方式,采用了file()读取,按行读取,形成一个数组。
- $file_open = file($file);
2、完整的代码
- <?PHP
- /**
- * Created by PHPStorm.
- * User: kung
- * Date: 2015/10/16
- * Time: 16:12
- */
- function get_file_dir($dir){
- $dir_arr = scandir($dir);
- $file_arr = array();
- foreach($dir_arr as $dir_one){
- if(is_dir($dir.DIRECTORY_SEPARATOR.$dir_one) && $dir_one != '.' && $dir_one != '..'){
- $file_arr_son = get_file_dir($dir.DIRECTORY_SEPARATOR.$dir_one);
- $file_arr = array_merge($file_arr,$file_arr_son);
- }else{
- if($dir_one == '.' || $dir_one == '..' || strpos($dir_one,'.PHP') <= 0)
- continue;
- $file_arr[] = $dir.DIRECTORY_SEPARATOR.$dir_one;
- }
- }
- return $file_arr;
- }
- $dir = dirname(__FILE__);
- $file_arr = get_file_dir($dir);
- $count = 0; //计算换行
- $clean_count = 0;//不计算换行
- foreach($file_arr as $file){
- $file_open = file($file);
- $line_count = count($file_open);
- $count += $line_count;
- foreach($file_open as $file_val){
- if($file_val == PHP_EOL)/*if(nl2br($file_val) == '<br />'想通过这种方式,但是发现不可行,用var_dump(nl2br($file_val))进行打印,复制才可以*/
- continue;
- $clean_count++;
- }
- }
- echo $count.'-----'.$clean_count;