$id=0;
empty($id)?print "我是空的":print "我是$id ."; //结果:我是空的
!isset($id)?print "我是空的":print "我是$id .";//结果:我是 0
6.==(等)和===(恒等)的区别
回顾上面第四条空字符串
("")和 NULL 的区别,再来看一个例子:
'' == NULL;
'' === NULL;
运行之后你会发现第一个为
true,而第二个则为 false!可见==只是比较值是否相等,而
===则不但比较值,还会比较类型,更为严格。
7.self :: 和 this-> 的区别
在访问
PHP 类中的成员变量或方法时,如果被引用的变量或者方法被声明成 const(定
义常量
)或者 static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有
被声明成
const 或者 static,那么就必须使用操作符->。
另外,如果从类的内部访问
const 或者 static 变量或者方法,那么就必须使用自引用的
self,反之如果从类的内部访问不为 const 或者 static 变量或者方法,那么就必须使用自引用
的
$this。
8.strstr() 与 strpos() 的区别
stristr() 不区分大小写 strstr() 区分大小写
函数查找字符串在另一个字符串中第一次出现的位置。
如果成功,则返回字符串的其余部分
(从匹配点)。如果没有找到该字符串,则返回
false。
stripos() 不区分大小写 strpos() 区分大小写
函数返回字符串在另一个字符串中第一次出现的位置。
如果没有找到该字符串,则返回
false。
经测试证明如果只是单纯查找判断是否存在则
strpos()的执行效率要大于 strstr()
9.PHP 中 HTTP_HOST 和 SERVER_NAME
相同点:
当满足以下三个条件时,两者会输出相同信息。
1. 服务器为 80 端口
2. apache 的 conf 中 ServerName 设置正确
3. HTTP/1.1 协议规范
不同点:
1. 通常情况:
_SERVER["HTTP_HOST"] 在 HTTP/1.1 协议规范下,会根据客户端的 HTTP 请求输出
信息。
_SERVER["SERVER_NAME"] 默认情况下直接输出 apache 的配置文件 httpd.conf 中的
ServerName 值。
2. 当服务器为非 80 端口时:
_SERVER["HTTP_HOST"] 会输出端口号,例如:mimiz.cn:8080
_SERVER["SERVER_NAME"] 会直接输出 ServerName 值
因此在这种情况下,可以理解为:
HTTP_HOST = SERVER_NAME : SERVER_PORT