1.交换两个变量的值。
分析:常用的做法是添加第三个变量来作为中介完成,这里分享一个不太常用的做法:
变量为字符串时:
$a = "hello";
$b = "php";
list($a,$b) = array($b,$a);
或者:
$a = $a.$b;
$b = strlen($a);
$b = substr($a,0,(strlen($a)-$b));
$a = substr($a,strlen($b));
变量值为数字时:
$a=$a+$b;
$b=$a-$b;
$a=$a-$b;
可以取a=4,b=5代入,进行验证。
对上述两种情况有一个通用的方法:
$a = array($a,$b);
$b = $a[0];
$a = $a[1];
2.不使用php内置方法获取到一个字符串的长度
$str = "hello php";
for($length=0;true;$length++) {
if(!isset($str[$length])) {
break;
}
}
echo $length;//输出$str的长度:9
3.利用php内置函数完成多级目录的递归创建
分析:由于老版本(version<5.0)的mkdir函数不能够递归创建目录,因此需要找到新的解决方案。
方法1:
喜大普奔,新版本的mkdir已经可以递归创建目录了(^_^),只需要将第三个参数设置为true即可。
方法2:
那么对于旧版本该如何创建呢?下面给出解决代码(十分精简的递归代码)
<?php
$path = 'D:/QQ/files/temp/tests';
function recursive($path)
{
if(is_dir($path)){
return true;
}else {
recursive(dirname($path));
mkdir($path);
}
}
4.php7.0新特性
php作为一门弱类型语言,函数的传入与传出的参数类型一直都比较随意,看了一些书籍后,发现统一参数的类型是非常有必要的。好在新版本的PHP已经支持规定参数格式了。示例如下:
function TypeDeclare(array $param): array
{
return $param;
}
$ret = TypeDeclare('this only test');
print_r($ret);
当传入的参数不符合预期时,会报错:
Fatal error: Uncaught TypeError: Argument 1 passed to TypeDeclare() must be of the type array, string given, called
再测试返回数据格式不符合预期的情况:
function TypeDeclare(string $param): array
{
return $param;
}
$ret = TypeDeclare('this only test');
print_r($ret);
同样,也会返回一个致命错误,提示返回类型有误。
不得不说,这些新特性,掌握之后,对编程还是有不小帮助的,天知道在写接口时,报错有多少次就是因为数据不统一。