<?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. 关于AI行业创业的6个问题

    第一个问题:互联网 vs 人工智能 首先如果今天大家选择创业,我建议更应该关注人工智能,而非互联网.为什么这么讲? 1. 互联网的流量红利已经消失: 以PC来说,全球PC出货量连续5年下滑.大家知道国 ...

  2. Listary快速查找文件

    快速查找文件 https://www.listary.com/

  3. yum命令不能使用的解决办法

    以前yum命令一直是可用的,今天使用它安装命令时一直提示,如下图: 百度了一圈说是网络问题: 然后我就ping www.baidu.com  可以ping通啊 最后在同事的帮助下找到了解决办法: vi ...

  4. python3下应用pymysql(第一卷)

    编程不会操作数据库,就像男人做做了太监,人生不完整,我不想人生不完整,写下pymysql的使用总结 先做下准备工作,准备下数据表,由于是练习操作,所以先做个简单的数据表: 创建单独的一个库:再创建表 ...

  5. Linux中的一些点

    前言 本文记录一些日常使用linux的一些点. 系统负载评估 理解Linux系统负荷 查看 ps -ef [root@deployer ~]# ps -ef UID PID PPID C STIME ...

  6. Bar条形图

    import matplotlib.pyplot as plt import numpy as np n = 12 X = np.arange(n) Y1 = (1 - X / float(n)) * ...

  7. tar:file-changed-as-we-read-it报错处理

    在使用tar命令对Mysql的数据目录进行备份打包时出现如下报错: tar cvzf mysql.tgz mysql /bin/tar: /path/to/mysql: file changed as ...

  8. 来自澳洲的数据秀场:记KDD 2015大会

    作者:微软亚洲研究院实习生 王英子 南半球最大城市和数据挖掘界顶级会议的浪漫碰撞 悉尼,作为澳大利亚第一大城市及新南威尔士州首府,澳大利亚的经济.金融.航运和旅游中心,同时还是南半球最大的城市和重要的 ...

  9. Canvas和svg总结比较

    Canvas 基本用法 getContext() 描边和填充 strokeStyle:设置描边样式fillStyle:设置填充样式stroke():描边fill():填充 绘制矩形 fillRect( ...

  10. 高阶函数---swift中的泛型介绍(一步步实现Map函数)

    说明 本文内容均出自函数式 Swift一书, 此处整理仅仅是为了自己日后方便查看, 需要深入研究的话, 可以点进去购买, 支持原作者 本书由 王巍–新浪微博大神翻译 OneV's Den 喵神博客 接 ...