2017-10-06 16 views
1

2つの文字列(数字)が同じかどうかを確認する必要があります。文字列のいずれかが先頭にゼロを持っている場合は、すべてのベットはオフになっている - それは彼らが同じであると言う:先頭のゼロと文字列を比較する

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

if ($hospitalno1 <> $hospitalno2){ 
    echo "Different"; 
} 

は、どのように私は、文字列としてではなく数値としてこれら2つの変数を比較することができますか?

答えて

0

intにそれらをキャスト:

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

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

まだ "この文字列は" 0になるので、is_int()前変換が追加されます用心を。

<>の代わりに、!=を使用してください。これは、前者がPHPで動作するにもかかわらず、後者はクロスランクの標準です。

0

あなたの質問が正しく分かっていれば、文字列の種類をジャグリングしたくないです。

<> 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

2

ちょうど使用:

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

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

?> 

!==が厳しいデータ型+値のチェックを行いますし、何が異なる場合に警告します。

+0

それのために多くの感謝 - 私は前に<>と!==の違いを実現したことはありません。 – Crookers

0

は、あなただけのそれ以外のタイプは無視されます

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

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

DEMO

0

はあなたが非常に接近しているタイプを無視しません!==の使用をしなければなりません。そのリンクの だけ前連結彼らは何が

$hospitalno1 = '64583'; 
    $hospitalno1 = 'a-'. $hospitalno1; 
$hospitalno2 = '064583'; 
    $hospitalno2 = 'a-'. $hospitalno2; 

if ($hospitalno1 <> $hospitalno2){ 
    echo "Different"; 
} 
0

を行います別の文字列の文字、a-、この

<?php 
$hospitalno1 = (string)"64583";     
$hospitalno2 = (string)"064583"; 

if ($hospitalno1 !== $hospitalno2){ 
    echo "Different"; 
} 
?> 

私のPHPコードのリンクを試してみてください>>Code

関連する問題