gs匹配算法php语言,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

for($j=0;$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

/* 把数组内比第一个小的数 放在左边的空数组*/

if($arr[i]

$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

$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 "$a","
"; //把文件夹红名输出

list_file($a);//因为是文件夹所以再次调用自己这个函数,把这个文件夹下的文件遍历出来

}else{

echo $a,"
";

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值