<?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. 解决scoped 下confirm 样式问题

  2. “大屏,您好!” SONIQ声光揭新品“U•F•O”神秘面纱

    作为全球第一批做互联网智能电视的传媒企业,SONIQ声光于4月22日在中国大饭店举行了盛大的新品发布会.其中的重头戏就是当天发布会上作为先锋部队入驻中国电视市场的"UFO".笔者作 ...

  3. [LC] 122. Best Time to Buy and Sell Stock II

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  4. rancher2.0快速入门

    注意:本入门指南的目的是让您快速的运行一个Rancher2.0环境,它不适用于生产.有关更全面的说明,请查阅Rancher安装. 本教程将指导您完成: 安装Rancher v2.0 : 创建第一个集群 ...

  5. mysql--sql_mode报错整理

    1.在5.7版本以上mysql中使用group by语句进行分组时, 如果select的字段 , 不是完全对应的group by后面的字段 , 有其他字段 , 那么就会报这个错误 ERROR 1055 ...

  6. 不同环境下的mvn运行指令

    ///////////////// 研发环境 //////////////////////////////////////// 清空环境: mvn clean -DAPP_ENV=dev 建立Ecli ...

  7. webpack进阶之loader篇

    webpack的loaders是一大特色,也是很重要的一部分.这遍博客我将分类讲解一些常用的laoder 一.loaders之 预处理 css-loader 处理css中路径引用等问题 style-l ...

  8. 给iPhone找一条平凡之路

    新款iPhone马上就要开发布会了,对于全世界的手机从业者来说,现在的感觉就好像中国人过年:早些时候,大家都盼着过年,放鞭炮.享受美食,小孩子还有压岁钱,但随着生活水平的提高,年味越来越淡,昔日的美好 ...

  9. 7/8段码管(LED)

    LED显示器在许多的数字系统中作为显示输出设备,使用非常广泛.它的结构是由发光二极管构成的a.b.c.d.e.f和g七段,并由此得名,实际上每个LED还有一个发光段dp,一般用于表示小数点,所以也有少 ...

  10. 强制迁移、合区 APP太强势伤害用户同时是否违法?

    APP太强势伤害用户同时是否违法?" title="强制迁移.合区 APP太强势伤害用户同时是否违法?"> 对于经常混迹在国内各大手游的玩家来说,"合区& ...