zoukankan      html  css  js  c++  java
  • 自己感受,如何解读别人的好的PHP代码

    今天写了一个解析国家行政区域的类,但是看到别人的代码,自己觉得的特别好,评论也很好,但是我看了半天没有看懂,现在写出来分析下,先贴上代码

    我把分析放到注释中去

     1 <?php
     2 
     3 // config
     4 $host     = '';
     5 $dbname   = '';
     6 $charset  = '';
     7 $username = '';
     8 $password = '';
     9 
    10 set_time_limit(0);
    11 
    12 $dsn = "mysql:host={$host};dbname={$dbname};charset={$charset}";
    13 
    14 $options = array(
    15     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    16 );
    17 
    18 $dbh = new PDO($dsn, $username, $password, $options);
    19 
    20 $sth = $dbh->prepare('
    21     INSERT INTO region (id, parent_id, name)
    22     VALUES (:id, :parent_id, :name)
    23 ');
    24 //前面是数据库结构,这里开始吧
    25 $parent = array();  //一个使用$level索引的父ID数组
    26 
    27 $handle = fopen('data.txt', 'r'); //文件打开句柄
    28 
    29 while (!feof($handle)) {  //判断是否是文件末尾
    30     $row = trim(fgets($handle));  //读取一行并去除两端空格
    31 
    32     if (!preg_match('/^(\d+)(\s+)(.+)$/', $row, $matches)) {
    33         continue;   //正则匹配到一个数组
    34     }
    35 
    36     list($row, $id, $delimiter, $name) = $matches;  //拆散数组
    37 
    38     if (!isset($separator)) {   //亮点出现了,这里是一个判断缩进长度的方法,定义一个由几个空格组成的缩进单位
    39         $separator = $delimiter;
    40     }
    41 
    42     $level = substr_count($delimiter, $separator);  //计算缩进单位获取区域级别
    43 
    44     $parent_id = $level > 1 ? $parent[$level - 1] : 0;   //如果当前不是根的级别,就获取到当前的父ID,这里的上下文比较难理解
    45 
    46     $parent[$level] = $id;   //根据级别生成一个父ID 
    47 
    48     $sth->bindValue(':id', $id, PDO::PARAM_INT);
    49     $sth->bindValue(':parent_id', $parent_id, PDO::PARAM_INT);
    50     $sth->bindValue(':name', $name);
    51 
    52     $sth->execute();
    53 }
    54 
    55 fclose($handle);
    56 
    57 ?>
  • 相关阅读:
    03-数据库必会问题
    2017.06.29数据挖掘基础概念第二.三章
    2017.06.29 数据挖掘概念知识第一章
    2017.06.9 金融时间序列分析之Eview使用基础
    2017.05.27 WeX5后端服务开发之注册
    2017.5.24 Git使用说明初级
    2017.05.06FreeCodeCamp编程之JS面向对象编程学习
    2017.05.05FreeCodeCamp前端编程之Javascript实现laohuji
    2017.05.05 freecodecamp前端编程之正则表达式
    2017.5.2 Javascript练习之FreecodeCamp--21点算法
  • 原文地址:https://www.cnblogs.com/linksgo2011/p/2864981.html
Copyright © 2011-2022 走看看