Php 大于值字符串的验证失败>;int

Php 大于值字符串的验证失败>;int,php,validation,session,Php,Validation,Session,我的“else if”语句验证失败。我的变量$\u SESSION\u PLAN\u ID(post data)的字符串值为“24”,并尝试将其与$plancompare的值进行比较,后者9(不是字符串/DB数据)。 24大于>9 但是我的调试输出echo'burrp3'从不被点击 var_dump($_SESSION['SESS_PLAN_ID']); echo "</br>"; if(

我的“else if”语句验证失败。我的变量
$\u SESSION\u PLAN\u ID(post data)
的字符串值为“24”,并尝试将其与
$plancompare
的值进行比较,后者
9(不是字符串/DB数据)
。 24大于>9 但是我的调试输出
echo'burrp3'从不被点击

                var_dump($_SESSION['SESS_PLAN_ID']);
                echo "</br>";
                if(!empty($_SESSION['SESS_PLAN_ID'])){
                        echo 'burrrp 1';
                        if($_SESSION['SESS_PLAN_ID'] >= 20 || $plancompare >= 20){
                                echo 'burrrp 2';
                                $_SESSION['SESS_DNSSEC'] = 1;
                        }else if($_SESSION['SESS_PLAN_ID'] > $plancompare){
                                echo 'burrrp 3';
                                echo '<br>';
                                $_SESSION['SESS_PLAN_BUY_CODE'] = $_SESSION['SESS_PLAN_ID'];
                        }
                }
                $_SESSION['SESS_PLAN_ID'] = $plancompare;
                var_dump($_SESSION['SESS_PLAN_ID']);
                echo "</br>";
                var_dump($_SESSION['SESS_PLAN_BUY_CODE']);
                echo "</br>";
                var_dump($_SESSION['SESS_DNSSEC']);
                session_write_close();

如何验证字符串24是否大于int 9?

更改如下条件,您需要在类似数据类型之间进行压缩:-

if((int)$_SESSION['SESS_PLAN_ID'] >= 20 || $plancompare >= 20){
                                echo 'burrrp 2';
                                $_SESSION['SESS_DNSSEC'] = 1;
                        }else if((int)$_SESSION['SESS_PLAN_ID'] > $plancompare){
                                echo 'burrrp 3';
                                echo '<br>';
                                $_SESSION['SESS_PLAN_BUY_CODE'] = $_SESSION['SESS_PLAN_ID'];
                        }
if((int)$\u SESSION['SESS_PLAN_ID']>=20 | |$plancompare>=20){
回声“毛刺2”;
$\会话['SESS\u DNSSEC']=1;
}else if((int)$\u会话['SESS\u PLAN\u ID']>$plancompare){
回声“毛刺3”;
回声“
”; $\会话['SESS\ U计划\购买\代码']=$\会话['SESS\ U计划\ ID']; }

注意:-将变量值更改为整数,然后进行比较。谢谢。

PHP将自动将数字字符串转换为整数进行比较,无需单独键入。您的代码永远不会进行第三次打嗝,因为您的第一个条件始终有效,因为24始终大于20--
$\u SESSION['SESS\u PLAN\u ID']>=20
--因此不会计算
其他部分。另外,如果第一个
条件是
|
意思是
,那么如果第一部分为真,那么第二部分是否为真并不重要。如果两者都需要为真,请使用
&&


另一个问题是,您可能有行
$\u会话['SESS\u PLAN\u ID']=$plancompare的结果,除非在调试之间重置会话。如果将它们设置为相同的值,则
$\u SESSION['SESS\u PLAN\u ID']>$plancompare
将始终为false,因为
9>9==false

将它们更改为int->string(2)“23”burrrp 1burrrp 2int(9)int(0)int(1)让我知道
$\u SESSION['SESS\u PLAN\u ID']
的字符串值为24,
$plancompare
的整数值为9。它是?检查我编辑的回答相同的事情设置只是字符串为int->live shot:/hey如果条件改变,你首先离开。看that@NIX数字字符串自动转换为整数进行比较。你的条件逻辑上有问题。尼克斯请把答案也投上去
if((int)$_SESSION['SESS_PLAN_ID'] >= 20 || $plancompare >= 20){
                                echo 'burrrp 2';
                                $_SESSION['SESS_DNSSEC'] = 1;
                        }else if((int)$_SESSION['SESS_PLAN_ID'] > $plancompare){
                                echo 'burrrp 3';
                                echo '<br>';
                                $_SESSION['SESS_PLAN_BUY_CODE'] = $_SESSION['SESS_PLAN_ID'];
                        }