PHP递归统计系统中代码行数


Posted in PHP onSeptember 19, 2019

本文实例为大家分享了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;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP的FTP学习(三)
Oct 09 PHP
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
PHP简洁函数小结
Aug 12 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
php读取文件内容的三种可行方法示例介绍
Feb 08 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
Apr 04 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
PHP实现统计代码行数小工具
Sep 19 #PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 #PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 #PHP
php使用yield对性能提升的测试实例分析
Sep 19 #PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 #PHP
php+redis实现消息队列功能示例
Sep 19 #PHP
php文件包含的几种方式总结
Sep 19 #PHP
You might like
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
JQuery性能优化的几点建议
2014/05/14 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
JS实现简单随机3D骰子
2019/10/24 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
Python线程指南分享
2019/11/19 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
劳动模范事迹材料
2014/01/19 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2014年保管员工作总结
2014/11/18 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS