//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