我正在使用drupal中的节点导入模块进行一些内容导入。我的问题是我的数据看起来应该是顺利运行的错误。这是有争议的代码:
if (count($allowed_values) && !array_key_exists($item['value'], $allowed_values)) { //$allowed_values[$item['value']] == NULL) {
print "||||" . $item['value'] . "||||";
print_r($allowed_values);
这是印刷品的样本:
|||| 1 |||| Array([0] => no [1] =>Zicam®冷补救鼻腔凝胶喷雾单孔执行器(“Jet”))|||| 1 || ||数组([0] =>否[1] =>是)
在我看来,它表示“1”不在数组中,当打印方式“1”清晰可见时。如果我用注释掉的检查替换现有的模块代码,则不会抛出任何错误。
答案 0 :(得分:2)
您的代码不完整,我无法重现错误。
请允许我调整您的示例:
<?
$item = array('value' => 1);
$allowed_values = array(0 => 'no',1 => 'yes');
echo "needle:";
var_dump($item['value']);
echo "haystack:";
var_dump($allowed_values);
if (count($allowed_values) && !array_key_exists($item['value'], $allowed_values)) {
echo "needle hast not been found or haystack is empty\n";
} else {
echo "needle has been found\n";
}
给出了所需的输出:
needle:int(1)
haystack:array(2) {
[0]=>
string(2) "no"
[1]=>
string(3) "yes"
}
needle has been found
当您为指针分配字符串而不是整数时,PHP也可以正常工作。它是某种有损类型转换,可以非常方便,但也很痛苦。通常你不知道发生了什么,并且导致错误。
但是仍然。我打赌你的变量类型有问题。
你应该抛弃它们,看看那里到底是什么。