<?php
/*
这是一个多线程的读取解决的函数
@param1 $fle 传入要读取的文件名
*/
function filelock($fle){
$fp=fopen($fls,'w+');//打开文件
if(flock($fp,LOCK_EX)){ //独占锁定
fwrite($fp,"this is a filelock function");//进行写入操作
flock($fp,LOCK_UN);//释放锁
}else{
echo "you can't do this because this file is useing";
}
fclose($fp);//关闭文件
}
/*
这是一个获取文件后缀名的函数
@param1 $url 文件路径
*/
function getname($url){
$path_info=pathinfo($url);//获取文件路径信息得到的是个数组数组 里面有四个值:dirname:文件路径 basename:文件名 extension:文件后缀名 filename:文件前缀名
$extra_name=$path_info['extension'];
return $extra_name;
}
/*
斐波那契数列第n位是什么,递归实现
斐波那契数列:每个数都等于前两位相加 比如: 1 1 2 3 5 8 13....
@param int $n 位数
*/
function feibo($n){
$res=1;
if($n<=0){//判断是否小于0
$res=0;
}elseif($n<=2){//判断是否是前两位
$res=1;
}else{
$res=feibo($n-2)+feibo($n-1);//从这里开始递归
}
return $res;
}
/*
冒泡排序
@param $arr 传入要排序的数组
*/
function bubing($arr){
$count=count($arr);
for($i=0;$i<$count-1;$i++){//外层循环控制排序的次数
for($j=0;$j<$count-$i-1;$j++){//内层循环控制比较的次数
if($arr[$j]>$arr[$j+1]){//如果前一个的值大于后一个的值就交换
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
}
/*
快速排序:通过一趟排序将要排序的数据分割成独立的两部分,
其中一部分的所有数据都比另外一部分的所有数据都要小,
然后再按此方法对这两部分数据分别进行快速排序,
整个排序过程可以递归进行,以此达到整个数据变成有序序列。
@param $arr 传入要排序的数组
*/
function quickSort($arr){
if(count($arr)>=1){//判断是否数组长度是否大于一大于一才排序否则直接输出
$count=count($arr);//获取数组长度
$left_arr=array();//定义一个空数组
$right_arr=array();
$temp=$arr[0];//把数组第一位数赋值给中间变量
for($i=1;$i<$count;$i++){//遍历数组
/* 把数组内比第一个小的数 放在左边的空数组*/
if($arr[i]<$temp){
$left_arr[]=$arr[i];
}else{
/* 把数组内比第一个大的数 放在右边的空数组*/
$right_arr[]=$arr[i];
}
$right_arr=quickSort($right_arr);//递归继续排序
$left_arr=quickSort($left_arr);
return array_merge($left_arr,array($temp),$right_arr);//连接数组
//使用array_merge这个函数的时候注意传入的参数必须为数组,否则最后连接的数组位空
}
}else{
return $arr;
}
 
}
/*
获取文件的相对位置
重点是对这个函数的使用array_diff_assoc
算出两个文件的相对路径,如 $a = "/a/b/c/d/e.php"; $b = "/a/b/12/34/c.php"
计算出 $a 相对于$b 的相对路径应该是 "../../12/34/c.php"
$param $a 文件名
$param $b 文件名
*/
function files($a,$b){
/* 开始时先判断传进来的参数是否位空 */
if(empty($a)||empty($b)){
return false;
}
$flag="";
$a1=explode('/',$a);//把$a文件名拆分成数组
$b1=explode('/',$b);//把$b文件名拆分成数组
$diff1=array_diff_assoc($a1,$b1);//比较两个数组之间的不同,第一次比较就是为了目录的层级
for($i=0;$i<count($diff1)-1;$i++){//遍历出a相对于b的上几层目录
$flag.="../";
}
$diff2=array_diff_assoc($b1,$a1);//这次是为了得到文件名
$fileName=implode('/',$diff2);//合并数组
return $flag.$fileName;
}
/*
遍历文件夹
@param $data 文件夹名
*/
function list_file($date){
//1、首先先读取文件夹
$temp=scandir($date);
//遍历文件夹
foreach($temp as $v){
$a=$date.'/'.$v;
if(is_dir($a)){//如果是文件夹则执行
if($v=='.' || $v=='..'){//判断是否为系统隐藏的文件.和.. 如果是则跳过否则就继续往下走,防止无限循环再这里。
continue;
}
echo "<font color='red'>$a</font>","<br/>"; //把文件夹红名输出
list_file($a);//因为是文件夹所以再次调用自己这个函数,把这个文件夹下的文件遍历出来
}else{
echo $a,"<br/>";
}
}
}

php里面的一些面试经典的函数的更多相关文章

  1. 面试经典算法题集锦——《剑指 offer》小结

    从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未 ...

  2. 另类加法 牛客网 程序员面试经典 C++ Python

    另类加法  牛客网 程序员面试经典 C++ Python 题目描述 请编写一个函数,将两个数字相加.不得使用+或其他算数运算符. 给定两个int A和B.请返回A+B的值 测试样例: 1,2 返回:3 ...

  3. 大公司面试经典数据结构与算法题C#/Java解答

    几个大公司(IBM.MicroSoft and so on)面试经典数据结构与算法题C#解答 1.链表反转 我想到了两种比较简单的方法 第一种是需要开一个新的链表,将原链表的元素从后到前的插入到新链表 ...

  4. 10 个经典PHP函数

    这篇文章主要介绍了php中的10个比较经典的函数,不太常见,可以满足有特殊需求的朋友 1. sys_getloadavg() sys_getloadavt()可以获得系 统负载情况.该函数返回一个包含 ...

  5. 面试经典-设计包含min函数的栈

    问题:设计包含min函数的栈(栈) 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素. 要求函数min.push以及pop的时间复杂度都是O(1). 解答:push 和pop的时间复杂度 ...

  6. c/c++笔试面试经典函数实现

    /* strcpy函数实现 拷贝字符串 */ char* Strcpy(char* dst, char* src) { assert(dst != NULL && src != NUL ...

  7. 【面试】shuffle函数的实现

    一.前言 有位同学面试的时候被问到shuffle函数的实现,他之后问我,我知道这个函数怎么用,知道是对数组(或集合)中的元素按随机顺序重新排列.但是没有深入研究这个是怎么实现的.现在直接进入JDK源码 ...

  8. Javascript:面试经典套路-查重(reduce)

    今天在偶然间查看到了一段代码,代码使用了很短的篇幅完成了字符串统计相同字符次数这个经典面试题,其中用到了reduce这个方法,网上查了查,没有查到什么有价值的东西,导致浪费了我一些时间才看懂,现将我的 ...

  9. 经典Hash函数的实现

    Hash函数是指把一个大范围映射到一个小范围.把大范围映射到一个小范围的目的往往是为了节省空间,使得数据容易保存. 除此以外,Hash函数往往应用于查找上.所以,在考虑使用Hash函数之前,需要明白它 ...

随机推荐

  1. django框架基础-ORM单表操作-长期维护

    ###############    单表操作-添加数据    ################ import os if __name__ == '__main__': os.environ.set ...

  2. python实现经典冒泡算法

    利用for循环,完成a=[1,7,4,89,34,2]的冒泡排序 冒泡排序:小的排在前,大的排在后面

  3. 吴裕雄--天生自然python学习笔记:Python3 XML 解析

    什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. XML 被设计用来传输和存 ...

  4. ACID原则

    ACID原则是数据库事务正常执行的四个,分别指原子性.一致性.独立性及持久性. 事务的原子性(Atomicity)是指一个事务要么全部执行,要么不执行.也就是说一个事务不可能只执行了一半就停止了.比如 ...

  5. MySQL rand(随机数)、floor(保留整数)、char(ASCII 转字符)、concat(字符串连接)

    一.MySQL的rand()函数 select rand(); rand()函数,随机0-1之间的数. 二.获得0-10之间的整数(包含0,不包含10) ; 其中floor()去掉小数. 三.获得指定 ...

  6. [VUE]关于路由哪些事儿

    什么是路由 之前有个小伙伴面试被问到:面试官:不用vue能不能写单页面应用?答:用angular啊(咳咳,开个玩笑),答案确实是可以的,原生js中有个事件叫做onhashchange,可以在windo ...

  7. [大餐]开发摘记1--我的Fragment通信的框架

    [大餐]开发摘记1--我的Fragment通信的框架 | 卖牙膏的芖口钉 盒子 盒子 博客 分类 标签 友链 大专栏  [大餐]开发摘记1--我的Fragment通信的框架ass="ROUN ...

  8. 极验验证码破解之selenium

    这一篇写完很久了,因为识别率一直很低,没办法拿出来见大家,所以一直隐藏着,今天终于可以拿出来见见阳光了. 哈喽,大家好,我是星星在线,我又来了,今天给大家带来的是极验验证码的selenium破解之法, ...

  9. C#中使用 正则表达式 替换img中src路径但保留图片名

    text = Regex.Replace(text, @"(?i)(?<=<img\b[^>]*?src=\s*(['""]?))([^'"& ...

  10. Centos +Docker 安装及仓库使用概述

    ​1. Linux 系统学习Docker安装篇 这里我使用的Centos系统 安装Docker yum命令说明 即Yellowdog Update Modifier,是一种基于rpm的包管理工具 yu ...