我有一个名为$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);
}
检查您检查错误的键,它是answer
不是amswer
也使用等于==
操作符匹配,否则您需要更改匹配条件(如'1' to 1
)或需要更改数组元素(like 0 to "0"
)的值类型所有
if(strlen($answers["answerswer1"]) == '1' && strlen($answers["answerswer2"]) == '1' && strlen($answers["answerswer3"]) == '1' && strlen($answers["answerswer4"]) == '1' && strlen($answers["answerswer5"]) == '1' && strlen($answers["answerswer6"]) == '1') {
echo 'here i am';
}else{
print_r($answers);
}
或
if (strlen($answers["answerswer1"]) === 1 && strlen($answers["answerswer2"]) === 1 && strlen($answers["answerswer3"]) === 1 && strlen($answers["answerswer4"]) === 1 && strlen($answers["answerswer5"]) === 1 && strlen($answers["answerswer6"]) === 1) {
echo 'here i am';
}
else{
print_r($answers);
}
strlen返回integer
类型的字符串长度,并且您与string
类型进行严格比较,因此它将返回false。
if (strlen($answers["answerswer1"]) === 1 && strlen($answers["answerswer2"]) === 1 &&
strlen($answers["answerswer3"]) === 1 && strlen($answers["answerswer4"]) === 1 &&
strlen($answers["answerswer5"]) === 1 && strlen($answers["answerswer6"]) === 1)
{
echo 'here i am';
}
else{
print_r($answers);
}
在数组键中也有一个错别字
这一行有个打字错误:
strlen($answers["amswer1"])
在查询中使用answer1
而不是amswer1
!!:)
strlen($answers["answerswer1"])
应该可以了!
你在这里使用===这是用来表示类型的相等匹配也许你的工作可以通过==符号来完成因为strlen默认返回int所以你可以将它与string
你有两个错误
当你
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
。