我试图查看_REQUEST ['abc']值是1还是0,否则将其设置为“na”
如果我使用intval(),则var = abc intval($ abc)= 0,空值“?abc =”
如何判断abc = 0或abc = 1,否则abc = na?
我试过
if( intval( $inputs[ 'abc' ] ) !== 0 && intval( $inputs[ 'abc' ] ) !== 1 )
{
$inputs[ 'abc' ] = 'na';
}
编辑:
为了透明,我的最终解决方案是:
if( strval( $inputs['abc'] ) !== '0' && strval( $inputs['abc'] ) !== '1' )
{
$inputs['abc'] = 'na';
}
所以也许我的解决方案是两个人的产品,但感谢所有帮助过我的人
答案 0 :(得分:3)
相反,如果intval
使用strval
,则会将您的变量转换为字符串。并将此值与字符串'1'
或'0'
:
if( strval( $inputs[ 'abc' ] ) !== '0' && strval( $inputs[ 'abc' ] ) !== '1' )
{
$inputs[ 'abc' ] = 'na';
}
答案 1 :(得分:0)
我几乎没有在PHP中进行过类型转换,只是让松散的比较来处理事情。此外,in_array
有我对多种情况的偏好。更容易阅读和维护imo。
所以我的代码看起来像这样:
if (! in_array($inputs['abc'], [0,1])) {
$inputs['abc'] = 'na';
}
答案 2 :(得分:-1)
假设_REQUEST你的意思是$ _REQUEST,那么我们可能想要这样做:
<?php
// ASSIGN THE VALUE OF THE $_REQUEST GLOBAL TO $inputs
$inputs = $_REQUEST;
// YOU MAY NOT NEED TO CAST TO INTEGER TYPE DURING THE CHECKS
// ESPECIALLY SINCE 0 IS INVOLVED... THE BEST BET IS EVEN TO CAST ALL TO STRING...
// SO WE FIRST CHECK THAT $inputs['abc'] IS NOT EQUAL TO THE STRING VALUE "0"
if( ($inputs['abc'] . "") !== "0" ){
// THEN AGAIN; WE CHECK THAT THE STRING VALUE OF $inputs['abc'] IS NOT "1"
if( ($inputs['abc'] . "" ) !== "1" ) {
// IF OUR CONDITION IS SATISFIED, WE GO AHEAD AND DO THE ASSIGNMENT: $inputs['abc'] = 'na'
$inputs['abc'] = 'na';
}
}
?>