background image

  

$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