我那令人费解的简单IF语句正在评估错误...当它无可否认是真的!

时间:2011-04-27 01:46:21

标签: php mysql if-statement

if($array[$i]['positiveOrNegative'] == 'p')

此数组值从CHAR(1)列的MySQL DB中提取。我已经var_dumped两个变量和BOTH返回字符串(1)p

我不知道世界上为什么没有正确评估,这真的让我大吃一惊。如果我做p == p,它确实有效。此外,strcmp($array[$i]['positiveOrNegative'],p)返回1(意味着它们不相同)。实际上,这是怎么回事??

-------- UPDATE:

等等,我必须严重破坏VarDumped ....现在我的变量是这样的:

  • $阵列[$ i]于[ 'positiveOrNegative']

  • string(4)“p”

  • var_dump(p)
  • string(1)“p”

MySQL中的变量p如何变为字符串(4)???

更新更新...... 该列中的每个条目都是一个字符串(4),但它们都是一个字母(n或p)。此外,即使我用PHPMyAdmin手工插入字母,它们也是字符串(4)...

3 个答案:

答案 0 :(得分:2)

您是否尝试将阵列打印到屏幕以查看输出?

print_r($array[$i]['positiveOrNegative']);

通过这样做,您将能够看到数组的全部内容,任何奇怪的内容都应该非常清晰。

我提到这个的原因是因为数据库对它的确切处理方式并不重要,只要它持久保存您可以使用的值。

因此,如果您直观地检查操作结果以确保没有发生任何奇怪的事情,您可以在进行条件比较之前格式化该数据库输出。

答案 1 :(得分:1)

将其展开并通过od -c运行。这将告诉您PHP在变量中的确切含义。从那里,您可以清理数据,并可能首先修复插入这种格式错误的数据的过程。

php somescript.php | od -c

答案 2 :(得分:0)

如果字符串确实有4个字节,请尝试执行以下操作,以便我们进一步检查内容:

print_r(array_map('ord', str_split($array[$i]['positiveOrNegative'])));