代码之家  ›  专栏  ›  技术社区  ›  Tarik

两个变量是100%相同的,但是当在if语句中进行比较时,不会执行任何操作。

php
  •  2
  • Tarik  · 技术社区  · 15 年前

    我有两条线。它们都很长,但我用过 echo 把它们都显示出来。没有一个字符是不同的。但当我把它们放进 if 语句中没有执行任何内容。

    if ($arrayFromMySqliArrayFetch['code'] == $_POST['code']) { echo 'please work.'; }
    

    有什么东西从我头上飞过吗?我不明白为什么什么都不会被处决?

    我复制了 如果 声明,但具有不同的内部结构。如果不应该有问题的话,我该如何缩小问题的范围呢?:(

    编辑

    谢谢大家的帮助。仅供参考,字符串都被修剪了。使用 var_dump 我发现一个字符串有128个字符(应该是什么),还有一个字符串 $_POST 有132个。有什么想法吗?

    5 回复  |  直到 15 年前
        1
  •  2
  •   Otar    15 年前

    使用 var_dump() 更好地理解每个变量的类型。

        2
  •  0
  •   kron    15 年前

    如果你尝试会发生什么

    if('same'=='same')-是否执行?我想是吧?

    如果(trim($val)=trim($val)),请尝试调整值,以确保也没有空白。

        3
  •  0
  •   Ephphatha    15 年前

    你应该使用 strcmp() 函数比较两个字符串,甚至是==运算符。见 this link 有关PHP中字符串比较的更多信息。

        4
  •  0
  •   shamittomar    15 年前

    尝试 trim() 然后比较字符串:

     if (trim($arrayFromMySqliArrayFetch['code']) == trim($_POST['code']))
         echo 'please work.';
    

    有时由于前导空格或尾随空格(不容易看到),会发生这种情况。

        5
  •  0
  •   Tarik    15 年前

    随机生成的字符中有一个是与号。它导致了字符串长度的差异。我完全忘记了原因,但这就是导致问题的原因。

    推荐文章