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

此时,$var1val将等于 15。

您将能够使用它来执行您的 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将它们转换为数字405不是字符串:

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

字符串按字典顺序进行比较,如您所见,比较第一个字符,如果第一个字符相等,则比较第二个字符,就像在字典中一样。

于 2013-08-27T22:01:16.730 回答