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的范围解析操作符(::)的含义分析说明
Jul 03 PHP
php中Socket创建与监听实现方法
Jan 05 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
php+ajax无刷新分页实例详解
Dec 07 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
PHP目录操作实例总结
Sep 27 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
php实现分页功能的详细实例方法
Sep 29 PHP
PHP基于进程控制函数实现多线程
Dec 09 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中上传大体积文件时需要的设置
2006/10/09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
php at(@)符号的用法简介
2009/07/11 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
python3爬虫怎样构建请求header
2018/12/23 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
Traffic People官网:女式花裙、上衣和连身裤
2020/10/12 全球购物
商场消防管理制度
2014/01/12 职场文书
家长对老师的评语
2014/04/18 职场文书
世博会口号
2014/06/20 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android