環(huán)境: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. 匿名函數(shù)簡寫
$func = function($val) {
return $val;
};
//等同于
$func = fn($val) => $val;
$func(1);
3. 匿名函數(shù)疊加
$func = fn() => fn() => 1;
echo $func()();
4. 消失的分號
//不會報錯
<?php
echo 1
?>
5. 空數(shù)組合并運算符
//使用??=,如果數(shù)組的元素有值且不為null,則賦值失敗
$arr = [];
$arr['k1'] ??= 'v1';
print_r($arr);
$arr['k1'] ??= 'v2';
print_r($arr);
6. 利用內(nèi)置類,創(chuàng)建空對象
$obj = new stdClass();
$obj->i = 123;
echo $obj->i; //1
7. 利用?->安全導(dǎo)航運算符,避免調(diào)用不存在的方法或?qū)傩詴r報錯
$obj = null;
var_dump($obj?->attr); //null
var_dump($obj?->method1()); //null
8. 單獨調(diào)用某個命名空間下的方法
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; // 結(jié)果為 6(二進制表示為 0110)
12. 通過異或賦值運算符,在兩個變量中,互相交換對方的值
$a = 'a';
$b = 'b';
$a ^= $b;
$b ^= $a;
$a ^= $b;
echo $a, $b; //ba
13. 添加蛇棒頭,用bash shell方式執(zhí)行PHP腳本
touch test.php
chmod +x test.php
...
./test.php
告訴告訴操作系統(tǒng)執(zhí)行此腳本時運行的解釋器,使用的是PHP解釋器文章來源:http://www.zghlxwxcb.cn/news/detail-759988.html
#!/usr/bin/env php
<?php
echo 1;
告訴告訴操作系統(tǒng)執(zhí)行此腳本時用這個目錄下的PHP去執(zhí)行文章來源地址http://www.zghlxwxcb.cn/news/detail-759988.html
#!/usr/local/php/bin/php
<?php
echo 1;
到了這里,關(guān)于十幾個冷門還好用的PHP寫法(冷門的讓人震驚)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!