翼度科技»论坛 编程开发 PHP 查看内容

十几个冷门还好用的PHP写法(冷门的让人震惊)

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
环境:PHP8.1

1. else foreach/else for
  1. //012
  2. if(false) {
  3. } else for($i = 0; $i < 3; $i++) {
  4.     echo $i;
  5. }
  6. //012
  7. if(false) {
  8. } else foreach([0, 1, 2] as $v) {
  9.     echo $v;
  10. }
复制代码
2. 匿名函数简写
  1. $func = function($val) {
  2.     return $val;
  3. };
  4. //等同于
  5. $func = fn($val) => $val;
  6. $func(1);
复制代码
3. 匿名函数叠加
  1. $func = fn() => fn() => 1;
  2. echo $func()();
复制代码
4. 消失的分号
  1. //不会报错
  2. <?php
  3. echo 1
  4. ?>
复制代码
5. 空数组合并运算符
  1. //使用??=,如果数组的元素有值且不为null,则赋值失败
  2. $arr = [];
  3. $arr['k1'] ??= 'v1';
  4. print_r($arr);
  5. $arr['k1'] ??= 'v2';
  6. print_r($arr);
复制代码
6. 利用内置类,创建空对象
  1. $obj = new stdClass();
  2. $obj->i = 123;
  3. echo $obj->i; //1
复制代码
7. 利用?->安全导航运算符,避免调用不存在的方法或属性时报错
  1. $obj = null;
  2. var_dump($obj?->attr); //null
  3. var_dump($obj?->method1()); //null
复制代码
8. 单独调用某个命名空间下的方法
  1. namespace Namespace1;
  2. function func1() {
  3.     echo 'func1';
  4. }
  5. function func2() {
  6.     echo 'func2';
  7. }
  8. namespace Namespace2;
  9. use function Namespace1\func1;
  10. func1(); //1
  11. 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. 移位运算符
  1. //15的二进制是1111,向右移动两位,就是0011
  2. echo 15 >> 2; //3
  3. //15的二进制是1111,向左移动两位,就是111100
  4. echo 15 << 2; //60
复制代码
11. 异或运算符 ^
  1. //15的二进制是1111,2的二进制是0010
  2. //逐个对比二进制位,都为1则为1,否则为0
  3. echo 15 & 2; //0010->2
  4. //逐个对比二进制位,有一个为1则为1,全部为0,则为0
  5. echo 15 | 2;//1111->15
复制代码
12.  通过异或赋值运算符,在两个变量中,互相交换对方的值
  1. //异或运算符^,可以理解为二进制逐个对比二进制位,相同为0,不同为1
  2. $a = 5; //0b0101
  3. $b = 3; //0b0011
  4. echo $a ^ $b; // 结果为 6(二进制表示为 0110)
复制代码
13. 添加蛇棒头,用bash shell方式执行PHP脚本
  1. $a = 'a';
  2. $b = 'b';
  3. $a ^= $b;
  4. $b ^= $a;
  5. $a ^= $b;
  6. echo $a, $b; //ba
复制代码
告诉告诉操作系统执行此脚本时运行的解释器,使用的是PHP解释器
[code]#!/usr/bin/env php

举报 回复 使用道具