比较带前导零的字符串

问题描述:

我需要检查两个字符串(数字)是否相同。但是,如果其中一个字符串有一个前导零,那么所有的赌注都关闭 - 它说,他们是平等的:比较带前导零的字符串

$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

+0

许多该链接的感谢 - 它确实有帮助 – Crookers

只需使用:

<?php 
$hospitalno1 = "64583";     
$hospitalno2 = "064583"; 

if ($hospitalno1 !== $hospitalno2){ 
    echo "Different"; 
} 
else 
{ 
    echo "same" ; 
} 

?> 

!==会做严格的数据类型+价值进行检查,如果有什么不同的是将提醒。

+0

非常感谢 - 我从来没有意识到和!==之间的区别。 – Crookers

你只需要利用!==,不会忽略键入否则类型会被忽略

$hospitalno1 = "64583";     
$hospitalno2 = "064583"; 

if ($hospitalno1 !== $hospitalno2){ 
    echo "Diffrent"; 
} 

DEMO

你非常接近。 与另一串字符只需预先将它们连接起来,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