环境:PHP8.1
1. else foreach/else for
//012
if(false) {
} else for($i = 0; $i < 3; $i++) {
echo $i;
}
//012
if(false) {
} else foreach([0, 1, 2] as $v) {
echo $v;
}
2. 匿名函数简写
$func = function($val) {
return $val;
};
//等同于
$func = fn($val) => $val;
$func(1);
3. 匿名函数叠加
$func = fn() => fn() => 1;
echo $func()();
4. 消失的分号
//不会报错
<?php
echo 1
?>
5. 空数组合并运算符
//使用??=,如果数组的元素有值且不为null,则赋值失败
$arr = [];
$arr['k1'] ??= 'v1';
print_r($arr);
$arr['k1'] ??= 'v2';
print_r($arr);
6. 利用内置类,创建空对象
$obj = new stdClass();
$obj->i = 123;
echo $obj->i; //1
7. 利用?->安全导航运算符,避免调用不存在的方法或属性时报错
$obj = null;
var_dump($obj?->attr); //null
var_dump($obj?->method1()); //null
8. 单独调用某个命名空间下的方法
namespace Namespace1;
function func1() {
echo 'func1';
}
function func2() {
echo 'func2';
}
namespace Namespace2;
use function Namespace1\func1;
func1(); //1
func2(); //Fatal error: Uncaught Error: Call to undefined function Namespace2\func2() in t1.php:13 Stack trace: #0 {main} thrown in t1.php on line 13
9. 移位运算符 <</>>
//15的二进制是1111,向右移动两位,就是0011
echo 15 >> 2; //3
//15的二进制是1111,向左移动两位,就是111100
echo 15 << 2; //60
10. 位运算符 |/&
//15的二进制是1111,2的二进制是0010
//逐个对比二进制位,都为1则为1,否则为0
echo 15 & 2; //0010->2
//逐个对比二进制位,有一个为1则为1,全部为0,则为0
echo 15 | 2;//1111->15
11. 异或运算符 ^
//异或运算符^,可以理解为二进制逐个对比二进制位,相同为0,不同为1
$a = 5; //0b0101
$b = 3; //0b0011
echo $a ^ $b; // 结果为 6(二进制表示为 0110)
12. 通过异或赋值运算符,在两个变量中,互相交换对方的值
$a = 'a';
$b = 'b';
$a ^= $b;
$b ^= $a;
$a ^= $b;
echo $a, $b; //ba
13. 添加蛇棒头,用bash shell方式执行PHP脚本
touch test.php
chmod +x test.php
...
./test.php
告诉告诉操作系统执行此脚本时运行的解释器,使用的是PHP解释器
#!/usr/bin/env php
<?php
echo 1;
告诉告诉操作系统执行此脚本时用这个目录下的PHP去执行
#!/usr/local/php/bin/php
<?php
echo 1;
玄机博客
© 版权声明
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
THE END
暂无评论内容