1

私はこれを理解しようとして苦労してきました。ユーザーが入力した % (5%、40% などの形式) であるさまざまな値のセットを比較する必要があります。ただし、if ステートメントを使用してどちらの % が大きいかを確認することはできないようです。たとえば、テスト:

<?php 
$var1 = '40%';
$var2 = '5%';
if ($var1 < $var2){
    echo 'var1 is smaller than var2';}
if ($var1 > $var2){
    echo 'var1 is larger than var2';} 
?>

は、var1 が var2 よりも小さいと言うことと同じです。最初の桁のみを比較しているようです。たとえば、5% を 3% に変更すると、var1 の方が大きいことが示されます。

このデータを入力するフィールドは、あらゆる種類の値に使用されるため、% の後に数値を入力する人はあまり信頼できません。それらを比較するために私が理解できるように見える唯一の方法は、各変数で str_replace を実行して % 記号を削除することですが、それはかなり非効率的だと思います。それらを比較する良い方法はありますか??

4

2 に答える 2

2
$var1 = "15%";

PHP の文字列です。それらを比較するには、文字列変数の intval を取得する必要があります。

$var1val = intval($var1);

この時点で、$var1val15 になります。

これを使用して if ステートメントを実行できます。

<?php 

$var1 = intval('40%');
$var2 = intval('5%');

if ($var1 < $var2){
    echo 'var1 is smaller than var2';
}
if ($var1 > $var2){
    echo 'var1 is larger than var2';
}

?>

または、に沿ってif

<?php 

$var1 = '40%';
$var2 = '5%';

if (intval($var1) < intval($var2)){
    echo 'var1 is smaller than var2';
}
if (intval($var1) > intval($var2)){
    echo 'var1 is larger than var2';
} 

?>
于 2013-08-27T22:03:19.453 に答える
0

intvalを使用して、文字列ではなく数値40に変換できます。5

$var1 = intval('40%'); // 40
$var2 = intval('5%'); // 5

あなたが観察したように、文字列は辞書式に比較されます。辞書のように、最初の文字が比較され、最初の文字が等しい場合は2番目の文字が比較されます。

于 2013-08-27T22:01:16.730 に答える