strlen in if else语句不起作用

时间:2014-06-25 06:35:42

标签: php

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

但结果总是错误的。

5 个答案:

答案 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显示

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

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

    因此,在密钥错误[amswer1]中,请更正[answer]

  2. 您正在使用'==='其检查相等性以及数据类型值的限制意味着'1'1之间存在差异。

    '1'表示字符

    1表示整数

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