!=和!==两者都不总是有效的?

时间:2015-10-23 作者:RobbertT

在我使用的多个wp模板中!== 在IF语句中,但我发现该代码在1模板中不起作用。我把它改成!= 现在它开始工作了。我的问题是,if语句和why will not都是相同的!== 使用此特定模板?

有什么想法吗?

我应该全部更改吗!==!= ?

我所说的特定if语句是(so!==在下面的语句中不起作用,但!=是)

$homefeatured = get_post_meta( $listing->ID, \'featured-home\', true );
 $catfeatured = get_post_meta( $listing->ID, \'featured-cat\', true );    
if (!empty($plans) && $plan[\'ID\'] != 104 || $plan[\'ID\'] ==104 && $homefeatured !=1 ||  $plan[\'ID\'] ==104 && $catfeatured !=1)

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

这实际上不是Wordpress的问题,而是纯粹的PHP。

  • != 比较两个值,当两个值不同时返回true。0 != \'0\' 将返回false,因为这些值彼此相似,其中一个是整数值0 另一个字符串值为0

  • !== 比较两个值,如果两个值不相同,则返回true。0 != \'0\' 将返回true,因为这两个值不相同。0 是整数,并且\'0\' 是字符串,因此它们显然不相同。它和苹果一样,因为颜色不同,绿苹果和红苹果不一样

在任何情况下,您都需要知道值是多少,需要进行比较。理想情况下,您希望进行严格的比较,即!=====, 但要想让它发挥作用,你需要确切地知道你的价值是什么,以及是什么样的价值。

正如我已经展示的,0 可以是字符串或整数。如果你要接受0 作为整数或字符串,则应使用不太严格的规则(!===)。如果你只需要接受0 作为整数OR 字符串,则应使用严格的规则(!=====

编辑

对于stict规则,您始终可以在比较之前将值强制转换为所需的值,就像可以将字符串值强制转换为0 然后对这两个值进行严格比较,所以简而言之,0 !== (int) \'0\' 应返回false,因为值与\'0\' 将成为0 转换为整数值时

相关推荐

Templates for Mobile Site

是否有任何内置方法可以根据浏览器大小显示不同的模板(即移动设备检测)?我做了一些研究,我能找到的只是大量插件,它们的功能远远超出了我的需要。我基本上只需要一种方法,将移动目录添加到我的主题中,并为移动用户显示该主题。