我有一个名为$answer
的数组
当我使用print_r
打印时
结果是这个
Array (
['answer1'] => 0
['answer2'] => 1
['answer3'] => 0
['answer4'] => 1
['answer5'] => 0
['answer6'] => 1
)
在if else语句中我无法理解逻辑
if (strlen($answers["amswer1"]) === '1' && strlen($answers["amswer2"]) === '1' && strlen($answers["amswer3"]) === '1' && strlen($answers["amswer4"]) === '1' && strlen($answers["amswer5"]) === '1' && strlen($answers["amswer6"]) === '1') {
echo 'here i am';
}else{
print_r($answers);
}
但结果总是错误的。
答案 0 :(得分:2)
检查您是否使用了错误的密钥检查answer
而非amswer
同时使用等于==
运算符来匹配您需要更改匹配条件(例如'1' to 1
})或需要为所有
like 0 to "0"
)
if(strlen($answers["answer1"]) == '1' && strlen($answers["answer2"]) == '1' && strlen($answers["answer3"]) == '1' && strlen($answers["answer4"]) == '1' && strlen($answers["answer5"]) == '1' && strlen($answers["answer6"]) == '1') {
echo 'here i am';
}else{
print_r($answers);
}
或
if (strlen($answers["answer1"]) === 1 && strlen($answers["answer2"]) === 1 && strlen($answers["answer3"]) === 1 && strlen($answers["answer4"]) === 1 && strlen($answers["answer5"]) === 1 && strlen($answers["answer6"]) === 1) {
echo 'here i am';
}
else{
print_r($answers);
}
答案 1 :(得分:1)
strlen 返回字符串的长度,即integer
类型,并且您与类型string
进行严格比较,因此它将返回false。
if (strlen($answers["answer1"]) === 1 && strlen($answers["answer2"]) === 1 &&
strlen($answers["answer3"]) === 1 && strlen($answers["answer4"]) === 1 &&
strlen($answers["answer5"]) === 1 && strlen($answers["answer6"]) === 1)
{
echo 'here i am';
}
else{
print_r($answers);
}
您的数组键中也会出现拼写错误。
答案 2 :(得分:0)
你在这一行有一个错字:
strlen($answers["amswer1"])
在您的查询中使用answer1
代替amswer1
!! :)
strlen($answers["answer1"])
应该这样做!
答案 3 :(得分:0)
你使用===这里用于类型匹配的相等可能是你的工作可以通过==登录比较,因为strlen默认返回int所以你将它与字符串进行比较
答案 4 :(得分:0)
你这里有两个错误
print_r
$answer
显示时,
Array ( [answer1] => 0 [answer2] => 1 [answer3] => 0 [answer4] => 1 [answer5] => 0 [answer6] => 1 )
但您使用的是$answers["amswer1"]) === '1'
因此,在密钥错误[amswer1]
中,请更正[answer]
。
您正在使用'==='
其检查相等性以及数据类型值的限制意味着'1'
和1
之间存在差异。
'1'
表示字符
1
表示整数
使用strlen
函数时要小心,因为它返回integer
。