zoukankan      html  css  js  c++  java
  • 一些语法,算法。

     
     /** 
         * 树递归,传引用到底
         * @param $id 要递归的id节点
         * @param array $arr 返回的多维数组
         */
        public static function getMenuTree($id, &$arr = array())
        {
            $sql = 'select bm_ModuleID as id,bm_ModuleName as text,bm_ModuleUrl as url from BM_ModuleStructure where bm_FModuleID = %d';
            $ret = self::getBySql($sql, array($id));
            if ($ret) {
                $arr['children'] = $ret;
                foreach ($arr['children'] as $key=>$v) {
                    self::getMenuTree($v['id'],$arr['children'][$key]);
                }
            }
        }
    /**
    *递归返回值需要注意的问题
    */
    function
    findFile($directory, $fileName) { $mydir = dir($directory); while ($file = $mydir->read()) { if ((is_dir("$directory/$file")) AND ($file != ".") AND ($file != "..")) { return findFile("$directory/$file", $fileName); //重点 } else if ($file == $fileName) { $mydir->close(); return "$directory/$file"; //如果是出现的递归,此处返回的是递归里面的函数的值,外面还要返回一层。 } } $mydir->close(); return null; }

    /*
    * *引用的问题,第一次foreach,将$a 指向 arr[2],$a = &$arr[2]; *第二次foreach $a一次赋值,arr[2]也响应改变,121,然后$a被unset,第二第三次的$a都是new的,而且不是引用变量。arr[2]也就没有再被改变。 */ $arr = array('a'=>1, 'b'=>2, 'c'=>3); foreach ($arr as &$a); // do nothing. maybe? foreach ($arr as $a) // do nothing. maybe?
    {
      unset($a);
    }
    print_r($arr); //122

    /**
    *上面的是变量引用
    *下面再来看一个函数引用
    */
    function &test() //需要调用例如:$a = &test();这引用函数时,该被引用的函数固定格式为:1,必须有返回值,2,函数前面需要加&号。
    {
      static $b = 0;
      echo $b;
      return $b;
    }
    //调用
    $a = test(); 没有起到引用的作用。函数定义那里的&是规定格式而已。
    $a = &test();
    $a = 5;
    test();
    输出: 0,5;
    沉底法
    for ($i = 0; $i < count($arr); $i++) {
            for ($j = 0; $j < count($arr) - $i -1; $j++) {
                if($arr[$j] < $arr[$j+1]){
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j+1];
                    $arr[$j+1] = $tmp;
                }
            }
        }
    先抛开外循环,内循环就是循环一遍,将最小的元素沉到底。
    循环count($arr)次后,达到目的。
    count($arr)-$i-1意思就是沉下去的元素都是确定排序的了
    
    反过来冒泡法
    for ($i = 0; $i < count($arr); $i++) {
        for ($j = count($arr)-1; $j > $i; $j--) {
            if($arr[$j] < $arr[$j-1]){
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j-1];
                $arr[$j-1] = $tmp;
            }
        }
    }


    暗夜之中,才见繁星;危机之下,暗藏转机;事在人为,为者常成。
  • 相关阅读:
    GitHub地址汇总
    Jenkins相关
    兼容性测试相关
    测试开发中间件相关知识点
    QQ国际版安装
    ubuntu本機安裝软件
    从零开始ubuntu 安装ubuntu16.04
    docker 学习网站
    Apt-get 命令出现错误 python版本切换
    白盒测试系列(四)条件判定覆盖
  • 原文地址:https://www.cnblogs.com/zenghansen/p/3990040.html
Copyright © 2011-2022 走看看