当前位置: 首页 > news >正文

php 几个算法

/**
     * 返回当前运行文件名
     * @acces private
     * @return string
     */
    private function run_filename() {
            $tmparr = explode(DIRECTORY_SEPARATOR,__FILE__);
            return end($tmparr);
    }

//例:
    $this->run_filename();//返回当前文件名

  

/**
     * 递归一维重复数组值
     * @以键名为数量值
     * @acces private
     * @return array
     */
    private function recursion_arr($arr,$data=[]) {
        $unique_arr = array_unique ( $arr );
        $repeat_arr = array_diff_assoc ( $arr, $unique_arr );
        foreach(array_unique($repeat_arr) as $repeat_arr_val) {
            $repeat_arr_key   = array_search($repeat_arr_val,$unique_arr);
            unset($unique_arr[$repeat_arr_key]);
        }
        $start_count = count($repeat_arr);
        $tmp = array_unique($repeat_arr);
        $executed_count = count($tmp);
        $data[] = $unique_arr;
        if($start_count > $executed_count) { //如果有相同的值,继续回调
            $result = $this->recursion_arr($repeat_arr,$data);
            return $result; //一层一层传上来
        }else{
            if($repeat_arr) {
                $data[] = $repeat_arr;
            }
            return $data; //直到底层开始返回结果
        }
    }  
//例:
$arr = array(
  0=>1,
  1=>2,
  2=>2,
  3=>3,
  4=>3,
  5=>3,
  6=>4,
  7=>4,
  8=>4,
  9=>4,
);
$this->recursion_arr($arr);
//结果:
array(
  0=>array(
      0=>1
    ),
  1=>array(
      0=>2,
      1=>2
    ),
  2=>array(
      0=>3,
      1=>3,
      2=>3
    ),
  3=>array(
      0=>4,
      1=>4,
      2=>4,
      3=>4
    )
);

  

转载于:https://www.cnblogs.com/bubaya/p/8109074.html

相关文章:

  • 2018年武汉大学653数学分析
  • iOS 中表格按时间戳分组排序
  • Java设计模式23种(搞笑版) (转)
  • Mac node js环境的安装与测试
  • Java并发编程实践读书笔记(2)多线程基础组件
  • HDFS High Availability Using the Quorum Journal Manager
  • 浏览器的渲染:过程与原理
  • StructureMap
  • linux的PHP扩展模块安装
  • hadoop3.0.0测验
  • 安装oracle数据库字符集编码
  • Kubernetes 中的服务发现与负载均衡
  • hdu2045
  • 高阶函数、返回函数、闭包、匿名函数、装饰器、偏函数
  • 应用脚手架创建一个React项目
  • C++入门教程(10):for 语句
  • CEF与代理
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Gradle 5.0 正式版发布
  • JS题目及答案整理
  • python_bomb----数据类型总结
  • python学习笔记-类对象的信息
  • React Transition Group -- Transition 组件
  • Spring声明式事务管理之一:五大属性分析
  • TCP拥塞控制
  • 代理模式
  • 官方解决所有 npm 全局安装权限问题
  • 类orAPI - 收藏集 - 掘金
  • 聊聊redis的数据结构的应用
  • 如何优雅地使用 Sublime Text
  • 译米田引理
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 云大使推广中的常见热门问题
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​比特币大跌的 2 个原因
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $jQuery 重写Alert样式方法
  • (pojstep1.3.1)1017(构造法模拟)
  • (动态规划)5. 最长回文子串 java解决
  • (三)模仿学习-Action数据的模仿
  • (推荐)叮当——中文语音对话机器人
  • ****Linux下Mysql的安装和配置
  • ***通过什么方式***网吧
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 中创建支持集合初始化器的类型
  • .Net各种迷惑命名解释
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [android] 天气app布局练习