Javascript “phpjs”strps函数未返回true
在将php脚本转换为js时,我使用了来自的一些函数。 但是,在相同条件下,“strpos”函数似乎不会返回trueJavascript “phpjs”strps函数未返回true,javascript,php,Javascript,Php,在将php脚本转换为js时,我使用了来自的一些函数。 但是,在相同条件下,“strpos”函数似乎不会返回true $string = "aaa:bbb"; $colons = strpos($string, ":"); echo $colons; if ($colons == true) {echo "yup";} 然而,与3yup相呼应: var string = "aaa:bbb"; var colons = strpos(string, ":"); console.log(co
$string = "aaa:bbb";
$colons = strpos($string, ":");
echo $colons;
if ($colons == true)
{echo "yup";}
然而,与3yup相呼应:
var string = "aaa:bbb";
var colons = strpos(string, ":");
console.log(colons);
if (colons == true)
{console.log("yup");}
只有回声3
这是我的错误、bug还是javascript处理的方面?
在任何情况下,对于字符串中存在冒号,建议使用什么方法来获得真实的结果
谢谢 如果您只希望基于strpo获得字符串状态,那么我想您可以执行以下操作:
if (strpos(string, ":") != false) {
console.log("string exists!");
}
JS中的strpos不返回true。相反,它返回位置,在您的例子中,它将返回4。php和phpjs实现都返回正确的值3,但==的语义不同 测试$colons==true的等效JS为:
因为在JavaScript中,3不等于true,而在php中,显然是这样这是你的if语句javascript@JasonSperske好的——如果我理解正确的话,这是关于js本身的,与php不同。你能多说一点为什么/怎么会这样吗?有些术语可能对我有帮助。当然。。。是的,很有效,谢谢!你知道我为什么不为真吗?javascript对布尔和整数的处理方式不同,而PHP则将所有非零都视为真。感谢-请注意,仔细检查,如果冒号位于字符串的第一个位置,它不会触发字符串exists语句。有趣的是,phpjs中的strpos函数返回false并在控制台中测试它。。。只是不是真的。这是可行的,不过我得研究一下原因。谢谢@GregoryTippett描述了确切的细节,但简单地说:在JS的比较中,布尔值true被提升为整数1,而在PHP中,整数被降级为布尔值true
Boolean(colons) == true