比较带前导零的字符串
问题描述:
我需要检查两个字符串(数字)是否相同。但是,如果其中一个字符串有一个前导零,那么所有的赌注都关闭 - 它说,他们是平等的:比较带前导零的字符串
$hospitalno1 = "64583";
$hospitalno2 = "064583";
if ($hospitalno1 <> $hospitalno2){
echo "Different";
}
我怎么能这两个变量比较字符串而不是数字?
答
它们转换成int
:
$hospitalno1 = "64583";
$hospitalno2 = "064583";
if ((int)$hospitalno1 != (int)$hospitalno2){
echo "Different";
}
但提防 “这个字符串” 将成为0
,所以加is_int()
之前转换。
而不是<>
你应该使用!=
尽管前者将在PHP中工作,后者是跨语言标准。
答
如果我正确理解你的问题,你不希望字符串被打乱。
<> type juggles to match types before comparison,
causing your strings to be ints
!== is a comparitor that doesn't type juggle before comparison
这里有一个比较运营商纲要: http://php.net/manual/en/language.operators.comparison.php
答
只需使用:
<?php
$hospitalno1 = "64583";
$hospitalno2 = "064583";
if ($hospitalno1 !== $hospitalno2){
echo "Different";
}
else
{
echo "same" ;
}
?>
的!==
会做严格的数据类型+价值进行检查,如果有什么不同的是将提醒。
+0
非常感谢 - 我从来没有意识到和!==之间的区别。 – Crookers
答
你只需要利用!==
,不会忽略键入否则类型会被忽略
$hospitalno1 = "64583";
$hospitalno2 = "064583";
if ($hospitalno1 !== $hospitalno2){
echo "Diffrent";
}
答
你非常接近。 与另一串字符只需预先将它们连接起来,a
,-
,随便什么都行
$hospitalno1 = '64583';
$hospitalno1 = 'a-'. $hospitalno1;
$hospitalno2 = '064583';
$hospitalno2 = 'a-'. $hospitalno2;
if ($hospitalno1 <> $hospitalno2){
echo "Different";
}
答
请尽量将
<?php
$hospitalno1 = (string)"64583";
$hospitalno2 = (string)"064583";
if ($hospitalno1 !== $hospitalno2){
echo "Different";
}
?>
我的PHP代码链接>>Code
许多该链接的感谢 - 它确实有帮助 – Crookers