1. 取模运算结果的正负仅取决于被除数
被除数为正,结果为正;被除数为负,结果为负。
echo ((-8)%3); // 将输出-2
echo (8%(-3)); // 将输出2
2. 全等于(===)和等于(==)的区别
两者都属于比较运算符,==(等于)只比较值是否相等,而===(全等于)则不但比较值是否相等,还会比较类型是否相等,它更为严格。
3. 递增递减运算
运算符在前先运算后赋值,运算符在后先赋值后运算
4. 单引号和双引号区别
- 对于转义:单引号只能转义
\'
和\\
,双引号转义内容较为广泛; - 对于解析:单引号不解析变量,双引号可以解析变量;
- 对于效率:单引号效率较高,因为它不解析变量;
注意:双引号中插入单引号,若单引号中存在变量,变量会被解析。因为单引号效率高,所以没有特殊情况一般使用单引号。
5. PHP类中使用全局变量和全局常量
- 全局常量可以直接用,但全局常量不能用来运算
- 类中不能直接使用global,可以在方法中传入global全局变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$global_var = "var"; define('global_const', 'const'); class Test { public $_var; // 全局常量可以直接用,但全局常量不能用来运算 public $_const = global_const; // public $_const = global_const."xxx"; // 类中不能直接使用global // global $global_var; // public $var = $global_Var; public function __construct() { // 全局变量可以通过global传入 global $global_var; $this->_var = $global_var; // 全局常量不可以通过global传入 //global global_const; } } |
6. isset函数检测值为NULL的变量也返回false
若变量不存在则返回 FALSE,若变量存在且其值为NULL,也返回 FALSE
7. 浮点数计算存在不精确的问题
计算0.3-0.2其值并不完全等于0.1,这是因为计算机底层二进制无法精确表示浮点数的问题。这是跨语言的。
8. 字符串连接符点号和逗号区别
点号是字符串连接符,逗号并不是。只是在echo 输出多个东西时可以用逗号分开。
echo 'a' . 'b'. 'c'; 是将三个字符串拼接之后输出
echo 'a', 'b', 'c'; 是依次输出三个字符串
理论上在 echo 的时候用“逗号”性能会高一点
9. 逻辑运算的短路特性
短路与 &&,短路或 ||,or、||、and、&& 都是短路运算符
&&(and)短路与运算符检查第一个表达式是否返回“flase”,如果是“false”则结束语句并返回“false”,否则检查第二个表达式。
|| (or)短路或运算符检查第一个表达式是否返回“true”,如果是“true”则结束语句并返回“true”,否则检查第二个表达式。
用法:常用逻辑判断
例如:$a || $b = 1