Strlen在if else语句不工作


strlen in if else statement not working

我有一个名为$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

进行比较

你有两个错误

  1. 当你print_r $answer显示

    Array ( [answer1] => 0 [answer2] => 1 [answer3] => 0 [answer4] => 1 [answer5] => 0 [answer6] => 1 )

    但你使用的是$answers["amswer1"]) === '1'

    所以在关键字中你有拼写错误[amswer1]请改正它[answer]

  2. 你正在使用'===',它的校验等于值的数据类型限制意味着'1'1之间存在差异。

    '1'表示字符

    1表示整数

所以使用strlen函数时要小心,因为它返回integer