PHP中echo和print的功能基本相同(输出),只是有一些细微的区别。echo输出后没有返回值,但是print有返回值,执行失败时返回flase。所以可以作为常用功能。例如,在执行以下代码后,变
PHP中echo和print的功能基本相同(输出),只是有一些细微的区别。echo输出后没有返回值,但是print有返回值,执行失败时返回flase。所以可以作为常用功能。例如,在执行以下代码后,变量$r的值将为1。
1$r = print "Hello World";
这意味着print可以用在一些复杂的表达式中,而echo不能。但是,因为echo语句不需要返回任何数值,所以代码中echo语句的效率比print语句略快。
2。包含和要求的区别
Include()和require()的功能(include)基本相同,只是用法有些不同。Include()是一个条件包含函数,而require()是一个无条件包含函数。例如,在下面的代码中,如果变量$a为true,将包含文件a.php:
123if($a){ include("a.php"); }
require()不同于include()。无论$a取什么值,下面的代码都会在文件中包含文件a.php:
123if($a){ require("a.php"); }
在错误处理方面,使用include语句。如果有include错误,程序将跳过include语句。虽然会显示错误信息,但是程序会继续执行!但是requre会给你一个致命的错误。
当然,从字面上,我们也可以理解为七点:requre表示非常强硬的要求。
3.require_once()和include_once()语句
题外话,因为长像,简单的require_once()和include_once()语句分别对应require()和include()语句。require_once()和include_once()语句主要用在需要包含多个文件的情况下,可以有效避免因包含相同代码而导致的函数或变量重复定义的错误。
4。空String(”)和NULL
在PHP中,空 string和NULL都以0值存储,但它们的类型不一样。可以试试echo gettype(”);和echo gettype(NULL);您会发现它们分别打印出string和NULL。当然,0也容易混淆。可以试试echo gettype(0);打印类型,你会发现0的类型是整数,可见的字符串(”),NULL和0是“等价”但不相等的类型。
5。isset和empty的区别
从字面上我们可以理解:空是判断一个变量是否为“空”,而isset是判断一个变量是否已经被设置。但这里有一点绝对要注意:当一个变量值为0时,empty认为这个变量等于空,相当于没有设置。比如我们测试变量$ id,当$ id = 0时,用empty和isset测试变量$ id是否已经配置,两者会返回不同的值:empty认为没有配置,isset可以得到$ id的值。请参见以下示例:
123$id=0; empty($id)?print "我是空的":print "我是$id ."; //结果:我是空的!isset($id)?print "我是空的":print "我是$id .";//结果:我是0
6。= =(相等)和= = =(相等)的区别
回头看看上面第四个空字符串(“”)和NULL,我们再举一个例子:
12'' == NULL; '' === NULL;
跑完你会发现第一个是真的,第二个是假的!可以看出= =只比较值是否相等,而= = =不仅比较值,还比较类型,更加严格。
7.self::和这个->:的区别
当访问PHP类中的成员变量或方法时,如果引用的变量或方法被声明为const(定义常量)或static(声明静态),则必须使用运算符。相反,如果引用的变量或方法没有声明为const或static,那么操作符->:。
此外,如果从类内部访问常量或静态变量或方法,则必须使用自引用。相反,如果不从类内部访问常量或静态变量或方法,则必须使用自引用$this。
8。strstr()和strpos ()的区别
Stristr()不区分大小写strstr()区分大小写。
函数查找一个字符串在另一个字符串中的第一个匹配项。
如果成功,则返回字符串的其余部分(从匹配点开始)。如果找不到该字符串,则返回false。
Stripos()不区分大小写。strpos()区分大小写。
返回函数字符串在另一个字符串中第一次出现的位置。
如果找不到该字符串,则返回false。
测试证明,如果只是简单的搜索和判断是否存在,strpos()的执行效率要比strstr()高。
[/9.php S2/]HTTP _主机和服务器_名称
相似性:
当满足以下三个条件时,两者将输出相同的信息。
1.服务器的端口是80。
2.在Apache的conf中正确设置了ServerName。
3.HTTP/1.1协议规范
差异:
1.总体情况:
_ SERVER[“HTTP _ HOST & # 8221]在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。
_ SERVER[“服务器名称”]默认情况下,直接输出apache的配置文件httpd.conf中的ServerName值。
2.当服务器为非80端口时:
_ SERVER[“HTTP _ HOST & # 8221]将输出端口号,例如:mimiz.cn:8080。
_ SERVER[“服务器名称”]直接输出ServerName值。
所以,在这种情况下,可以理解为:http _ host = server _ name:server _ port
3.当配置文件httpd.conf中的服务器名与HTTP/1.0请求的域名不一致时:
Httpd.conf的配置如下:
服务器名mimiz.cn
服务器别名www.mimiz.cn
客户端访问域名www.mimiz.cn
_ SERVER[“HTTP _ HOST & # 8221]输出www.mimiz.cn
_ SERVER[“服务器名称”]输出mimiz.cn
因此,在实际程序中,我们应该尽量使用_ SERVER[“HTTP _ HOST & # 8221],更安全可靠。
如果在内部网中进行端口映射和访问,请使用" $ _ SERVER[‘HTTP _ X _ FORWARDED _ HOST & # 8217]”比较好。