PHP易混淆函数的区别

1.echo()和print()的区别

void echo(string arg1 [, string ...])
Outputs all parameters.

int print( string arg )
Outputs arg. Returns1, always.
print() is not actually a real function (itis a language construct) so you are not required to use parentheses with itsargument list.
-----------------------------------------
echo()和print()的功能基本相同,但是两者还是有细微差别的。
echo输出后没有返回值,但print有返回值,当其执行失败时返回flase,因此可以作为一个普通函数来使用。


例如执行下面的代码后变量$r的值将为1:
$r = print “Hello World”; 
这意味着print可用在一些复杂的表达式中,而echo则不行。


但是,因为echo语句不要求返回任何数值,所以在代码中echo的运行效率要略快于print语句。


2.include()和require()、include_once()和require_once()的区别


两者都是包含并运行指定文件。
include()产生一个警告,而require()则导致一个致命错误(fatal error)。(这句话很关键)


换句话说,如果想在遇到丢失文件时停止处理页面就用require()。
include()就不是这样,脚本会继续运行。
同时也要确认设置了合适的include_path。
注意在 PHP 4.3.5 之前,包含文件中的语法错误不会导致程序停止,但从此版本之后会。
require_once()和 require()语句类似,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。


require_once() 应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。
-----------------------------------------
说的通俗点,include()是有条件包含函数,而require()则是无条件包含函数。就像字面的意思一样:requre是很强硬的请求、要求的意思。
例如在下面代码中,如果变量$a为真,则将包含文件a.php:
if($a){
include(”a.php”);
}


而require()则和include()不同,不管$a取何值,下面的代码将把文件a.php包含进文件里:
if($a){
require(”a.php”);



3.空字符串('')和NULL的区别
PHP中空字符串和NULL都是以值为0存储的,但是他们的类型并不一样。
在以下代码中,你会发现他们打印出来的分别是integer,NULL string三种类型。
可见、NULL和0是“等值”但不等类型。
<?php
    echo gettype(0);
    //output "integer"
    echo "<br>";
    echo gettype(NULL);
    //output "NULL"
    echo "<br>";
    echo gettype("");
    //output "string"
    echo "<br>";
    echo gettype('');
    //output "string"
    //‘’and "" is the same type in PHP language.


4.isset()和 empty()的区别
基于第4点,我们继续讨论isset()和empty()的区别。
以下是官方给出的解释:
----------------------------------------------
bool isset ( mixed var [, mixed var [, ...]] )
如果 var 存在则返回 TRUE,否则返回FALSE。
如果已经使用unset()释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。
同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。
警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数
bool empty ( mixed var )
如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回TRUE。
-----------------------------------------
isset(),顾名思义,是否设值。
对于。emptyI()这里有一点绝对要注意起来:当一个变量值为0,empty 认为这个变量同等于空,即相当于没有设置。
比如当我们检测$id 变量的时候,
<?php
    //define a var
    $id = 0;
    //output "1"
    echo isset($id)."<br>";
    //output "1" each function is return a boolean type
    echo empty($id)."<br>";
    //true
    if (empty($id)) {
    echo '$var is either 0 or not set at all'."<br>";
    }
    //false
    if (!isset($id)) { 
    echo '$var is not set at all'."<br>";
    }
当$id=0 ,用empty和isset来检测变量$id是否已经配置,两将返回不同的值:empty 认为没有配置,isset 则能够取得 $id 的值,  
6.==(等)和===(恒等)的区别
回顾上面第四条空字符串(”")和NULL的区别,再来看一个例子:
<?php
    if(''==NULL){
        echo "true"."<br>";
    }
    if(!(''===NULL)){
        echo "true";
    }
运行之后你会发现打印两个true!
可见==只是比较值是否相等,而===则不但比较值,还会比较类型,更为严格。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值