lomg 发表于 2015-8-29 08:11:37

[ThinkPHP] 比较标签 neq&nheq 与 PHP 中的 != 与 !== 出现的问题

1. 模板 > 内置标签 > 比较标签
控制器:
$_data['list'] = [ 'dingo' , 'engo' , 'fengo' , 'gingo' , 'autoFill'=>'jingo'] ;

$this->assign($_data);

视图模板:
{{foreach item="item" name="list" key="k"}}

{{if condition = "$k neq 'autoFill'"}}
    {{$item}}
{{/if}}

{{/foreach}}

输出结果: engo , fengo , gingo

缺少了 dingo 。

查看缓存中生成的 PHP 代码,发现使用 "neq" 对应的是 " != " ;

使用 "nheq" 对应的是 " !== " 。

最终,我自己写了一段 PHP 原生代码来进行测试,代码如下:

<?php


$arr = ['dindo' , 'kingo' , 'gingo' , 'qingo' , 'autoFill'=>'winwo'];

foreach($arr as $key => $val) {

       if($key !== 'autoFill') { // !=
   
             echo $key.'-<h3>'.$val.'-</h3>';
      }
}

// 输出结果:dingo , kingo , gingo , qingo
echo '<hr />';


foreach($arr as $key => $val) {

       if($key != 'autoFill') { // !=
   
             echo $key.'-<h3>'.$val.'-</h3>';
      }
}

// 输出结果:kingo , gingo , qingo

?>

总结:原因可能是出于 PHP 的( != )比较运算符有问题,在比较 0 与字符串时,会出现问题。建议尽量使用 " !== "。

!= , PHP 官方手册说明是比较值,不比较数据类型。
!== , PHP 官方手册说明是比较值与数据类型。
页: [1]
查看完整版本: [ThinkPHP] 比较标签 neq&nheq 与 PHP 中的 != 与 !== 出现的问题