用PHP递归统计系统中代码行数
2015-10-16 18:02
639 查看
1、统计代码行数,必然用到的两个关键的知识点:函数递归以及文件读取。
函数递归无非就是在函数的代码中调用本身的函数名,以此形成递归循环
在文件读取中,有很多读取方式,采用了file()读取,按行读取,形成一个数组。
后文:今天下午不太忙,想起来今早在公交车上看微信公共账号的文章,其中一篇是《关于烂代码的那些事》,作者提到在面试过程中会出一道题,“写一个代码行数统计工具”,想着用php写一下。
函数递归无非就是在函数的代码中调用本身的函数名,以此形成递归循环
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;
后文:今天下午不太忙,想起来今早在公交车上看微信公共账号的文章,其中一篇是《关于烂代码的那些事》,作者提到在面试过程中会出一道题,“写一个代码行数统计工具”,想着用php写一下。
相关文章推荐
- ftp错误
- php开发中的10大良好习惯
- 菜菜鸟Zend Framework 2 不完全学习涂鸦(四)-- 模块
- php编程中需要注意的10个常见的错误
- phpstorm 常用 快捷键
- windows server r2配置php环境
- sql这两个表和查询的组合yii通过使用数据库查询
- php5 mysqli 连数据库创建表
- php实现word转html文档卡死的问题
- php实现word转html文档的例子
- Yii 执行模型save方法时数据为空
- PHP函数之error_reporting()详细说明
- 菜菜鸟Zend Framework 2 不完全学习涂鸦(三)-- 例子功能设置
- 菜菜鸟Zend Framework 2 不完全学习涂鸦(二)-- 类库共享
- 菜菜鸟Zend Framework 2 不完全学习涂鸦(一)-- 安装配置
- php手册之static
- PHP删除数组中重复的元素
- Thinkphp 框架模板变量及模板输出
- PHP页面跳转与页面重定向详解
- listener.ora中PLSExtPro 和ExtProc的作用(转)