[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 官方手冊說明是比較值與數據類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM