- Integer不支持无符号整数,PHP_INT_MAX表示整数最大值。
- 任意长度整数/GMP与任意精度数学库/BCMath。前者大爱呀,做密码学的人必备。
- 如果给定的一个数超出了 integer 的范围,将会被解释为 float.
- PHP 中没有整除的运算符。1/2 产生出 float 0.5。在这一点上,于C语言设计思想一致:默认由低精度向高精度转换。
- 某些数学浮点运算会产生一个由常量 NAN 所代表的结果。任何拿此值与其它任何值进行的松散或严格比较的结果都是 FALSE。由于 NAN 代表着任何不同值,不应拿 NAN 去和其它值进行比较,包括其自身,应该用 is_nan() 来检查。
- string中的复杂表达式解析可以使用{}括起来。由于 { 无法被转义,只有 $ 紧挨着 { 时才会被识别。
- 数组中新添加元素的默认键名是最大整数索引值+1,注意这里所使用的最大整数键名不一定当前就在数组中。它只要在上次数组重新生成索引后曾经存在过就行了。
- 变量默认总是传值赋值,除非通过「&」引用传递。
- 如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。
- continue 语句作用到 switch 上的作用类似于 break。如果在循环中有一个 switch 并希望 continue 到外层循环中的下一轮循环,用 continue 2。
- 在php5 的对象编程经常提到的一个关键点是“默认情况下对象是通过引用传递的”。但其实这不是完全正确的。php的引用是别名,就是两个不同的变量名字指向相同的内容。在php5,一个对象变量已经不再保存整个对象的值。只是保存一个标识符来访问真正的对象内容。 当对象作为参数传递,作为结果返回,或者赋值给另外一个变量,另外一个变量跟原来的不是引用的关系,只是他们都保存着同一个标识符的拷贝,这个标识符指向同一个对象的真正内容。
- 当 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。
PHP语言一些「有意思」的地方
回复