Php 大于值字符串的验证失败>;int
我的“else if”语句验证失败。我的变量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(
$\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'];
}