在我使用的多个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)
最合适的回答,由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
转换为整数值时