我正在尝试修改我工作的应用程序中的一些旧代码。目前,该应用程序解析从API接收的部分响应字符串,以确定请求是好还是失败。如果请求处理成功,API的响应将发回包含字符“DP”的字符串。现在应用程序中有一行代码如下:
if(stripos($result, "DP") !== false)
现在工作正常,但我可以预见到这个问题。 stripos
即使实际上在大海捞针内找到针头,也会返回“假”值。由于haystack字符串使用stripos
进行零索引,如果在haystack字符串的最开头找到字符“DP”,该函数将返回0,这将被错误地读取为false。此代码现在正在运行,但如果由于任何原因维护我们工作的API的开发人员决定重新格式化他们的响应,我们将遇到问题。我正考虑将此更改为以下内容:
if(stristr($result, "DP") !== false)
据我所知,这应该没问题,因为根据php.net stristr
,如果在haystack中发现不,则只返回false。我很好奇,如果有人发现任何类似于上述stristr
功能的问题。
答案 0 :(得分:4)
0
(或false
),则 ===
不等于!==
。
请参阅此小提琴以获取证据:http://phpfiddle.org/main/code/nih-esg
有关PHP网站的更多信息:http://www.php.net/manual/en/language.operators.comparison.php
答案 1 :(得分:0)
由于你的使用!==这是一个非问题,因为tripple
运算符同时检查值和类型
false!= 0:false
false!== 0:true
答案 2 :(得分:0)
<?php
$result="DP";
if (stripos($result, "DP") !== false)
{
echo stripos($result, "DP");
}
?>
从括号内返回0
。