我一直在努力解决这个问题。我需要比较用户输入的%的各种值(格式为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以删除%符号,但我觉得这样效率很低。有没有更好的方法来比较它们?
答案 0 :(得分:1)
$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';
}
?>
OR ,符合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';
}
?>
答案 1 :(得分:0)
您可以使用intval将其转换为数字40
和5
而不是字符串:
$var1 = intval('40%'); // 40
$var2 = intval('5%'); // 5
字符串按字典顺序进行比较,正如您所观察到的,第一个字符被比较,然后第二个字符相等,就像在字典中一样。