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”
和
MySQL中的变量p如何变为字符串(4)???
更新更新...... 该列中的每个条目都是一个字符串(4),但它们都是一个字母(n或p)。此外,即使我用PHPMyAdmin手工插入字母,它们也是字符串(4)...
答案 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'])));