1.冒泡排序
function mysort($arr){
$len=count($arr);
if($len <=1) return $arr;
for($i=0;$i<$len;$i++){
for($j=0;$j<$len-$i-1;$j++){
if($arr[$j]<$arr[$j+1]){
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
return $arr;
}
2.快速排序
function mysort($arr){
$len=count($arr);
if($len <=1) return $arr;
$base = $arr[0];
$left=[];
$right=[];
for ($i=1;$i<$len;$i++){
if($arr[$i]<$base){
$left[]=$arr[$i];
}else{
$right[]=$arr[$i];
}
}
$left=mysort($left);
$right=mysort($right);
return array_merge($left,array($base),$right);
}
3.斐波那契数列
function myfun($num){
if($num<=0) return 0;
$arr[1]=$arr[2]=1;
for ($i=3;$i<=$num;$i++){
$arr[$i]=$arr[$i-1]+$arr[$i-2];
}
return $arr;
}
//递归写法
function myfun1($num){
return $num<2?1:myfun1($num-1)+myfun1($num-2);
}
4.文件加锁和解锁
$fp=fopen('./test.txt','w+');//读写方式打开,每次打开清空
if(flock($fp,LOCK_EX)){//锁定文件-2
fwrite($fp,'write something');
flock($fp,LOCK_UN);//取消锁定-3
}else{
echo 'is locking';
}
fclose($fp);
5.遍历文件夹
function mydir($dir){
$files=[];
if(is_dir($dir)){
if($handle=opendir($dir)){
while (false != ($file=readdir($handle))){
if($file != '.' && $file !='..'){
if(is_dir($dir.'/'.$file)){
$files[$file]=mydir($dir.'/'.$file);
}else{
$files[]=$dir.'/'.$file;
}
}
}
}
} else{
return false;
}
return $files;
}
6.传一个字符串,返回排序好的字符串/返回出现次数最多的字母
function mystring($str){
$arr = str_split($str);
$res=array_flip(array_flip($arr));//数组去重并重新建立索引
sort($res);
return implode('',$res);
}
function mystring($str){
$arr = str_split($str);
$res=array_count_values($arr);//计算值得次数
arsort($res);
reset($res);
$res=key($res);
return $res;
}
7.从url中获取扩展名
function getN($url){
$arr=parse_url($url);
$file=basename($arr['path']);
$file=explode('.',$file);
return array_pop($file);
}
8.获取上个月的第一天和最后一天
//第一天
$day = date('Y-m-01',strtotime('-1 month'));
//最后一天
$day = date('Y-m-t',strtotime('-1 month'));
9.一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
function myfun($m,$n){
$monkeys = range(1,$n);
$i=0;
while (count($monkeys)>1){
if(($i+1)%$m==0){
unset($monkeys[$i]);
}else{
array_push($monkeys,$monkeys[$i]);
unset($monkeys[$i]);
}
$i++;
}
return current($monkeys);
}
echo myfun(2,3);
10.有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛
function niu($y){
static $cow=1;
for ($i=1;$i<=$y;$i++){
if($i>=4 && $i<15){
$cow++;
niu($y-$i);
}elseif($i==20){
$cow--;
}
}
return $cow;
}
echo niu(8);