php面试常考函数,PHP面试常见算法、函数总结

//a=10,b=15 在不用第三个变量的前提下交换a b的值

//使用list():

$a = "fsdfds";

$b = "xiaorui";

list($a,$b) = array($b,$a);

echo $a."-".$b;

//使用数组分隔:

$a = "fsdfds";

$b = "xiaorui";

$b = $a."#$".$b;

$b = explode("#$",$b);

$a = $b[1];

$b = $b[0];

echo $a."-".$b;

//使用字符串截取

$a = "fsdfds";

$b = "xiaorui";

$a = $a.$b;

$b = substr($a,0,strlen($a)-strlen($b));

$a = substr($a,strlen($b));

echo $a."-".$b;

?><?php

//2.写个函数来解决多线程同时读写一个文件的问题

/*

*flock(file,lock,block)

*file 必需,规定要锁定或释放的已打开的文件

*lock 必需。规定要使用哪种锁定类型。

*block 可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。

*lock

*LOCK_SH 要取得共享锁定(读取的程序)

*LOCK_EX 要取得独占锁定(写入的程序)

*LOCK_UN 要释放锁定(无论共享或独占)

*LOCK_NB 如果不希望 flock() 在锁定时堵塞

/*

$fp = fopen("/tmp/lock.txt", "w+");

if (flock($fp, LOCK_EX)) { // 进行排它型锁定

fwrite($fp, "Write something here\n");

flock($fp, LOCK_UN); // 释放锁定

} else {

echo "Couldn't lock the file !";

}

fclose($fp);

?>3. 写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。

url dir/upload.image.jpg找出jpg或者.jpg

1.return strrchr($filename,"."));

//strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符

2.return substr($filename,strrpos($filname,"."));

strrpos() 函数查找字符串在另一字符串中最后一次出现的位置。

substr(string,start,length) 函数返回字符串的一部分。

3.return array_pop(explode(".",$filename));

4.$p=pathinfo($filename); return $p['extension'];

5. return strrev(substr(strrev($filanme),o,strpos(strrev($filename),".")));

//4.从url http://www.baidu.com/xxx/xxx.php?id=1 中提取xxx.php

$path = "http://www.baidu.com/xxx/xxx.php?id=1";

function getExt($path){

$arr=parse_url($path);

$file=basename($arr['path']);

$ext=explode(".", $file);

return $ext[1];

}

function getExt2($url){

$url=basename($url);

$pos1=strpos($url,".");

$pos2=strpos($url, "?");

if(strstr($url,"?")){

return substr($url, $pos1+1,$pos2-$pos1-1);

}else{

return substr($url, $pos1+1);

}

}

?><?php

//将eBay转换为yAbe输出

$str="eBay";

$s1=strtolower(strrev($str));

$out="";

for($i=0;$i1.写一个函数,随机从a-z中取10000个值拼成字符串

function suiji($num){

$arr=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");

$result="";

for($i=0;$i

$rand=rand(0,25);

$result.=$arr[$rand];

}

return $result;

}

2.写一个函数,计算当参数为N的值:1-2+3-4+5-5+7……+N

function countN($num){

$t=0;

for($i=1;$i<=$num;$i++){

if($i%2==0){

$t+=-$i;

}else{

$t+=$i;

}

}

return $t;

}

3.一列数的规则如下:1,1,2,3,5,8,13,21,34 求第30位数是多少,用递归算法实现。(斐波纳契数列(Fibonacci Sequence),又称黄金分割数列)

function fibonacci($n){

$return=1;

if($n<=0){

$return=0;

}elseif($n<=2){

$return = 1;

}elseif($n>2){

$return=fibonacci($n-1)+fibonacci($n-2);

}

return $return;

}

4.将 1234567890 转换成 1,234,567,890 每 3 位用逗号隔开的形式。(反转、分隔、再反转)

$str="1234567890";

$str = strrev($str);

$arr = str_split($str,3); //把字符串按3个字符的长度拆成数组.

$str = strrev(implode($arr,','));

return $str;

1.下面代码的返回值是多少

$a=3;

$b=5;

echo $a."***".$b."
";

if($a=5){

echo $a."***".$b."
";

$a++;

$b++;

echo $a."***".$b."
";

}

echo $a."***".$b;

答案:

3***5

5***5

6***6

6***6

2.

1.杨辉三角

1

1  1

1  2   1

1  3   3   1

1  4   6    4   1

1  5  10  10  5  1

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值