如何解决当数组明显具有键时,array_key_exists返回false
| 我正在使用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 |||||阵列([0] =>否[1] =>Zicam®鼻腔凝胶喷雾单孔执行器(“ Jet”))|||| 1 ||||阵列([ 0] =>否[1] =>是)
在我看来,这是说“ 1”不在数组中,当打印方式“ 1”清晰可见时。如果我用注释掉的检查替换现有的模块代码,则不会引发任何错误。
解决方法
您的代码不完整,我无法重现该错误。
请允许我调整您的示例:
<?
$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也可以使用。这是一种有损类型转换,可以真正方便但又麻烦。通常,您不知道发生了什么,并且会导致错误。
但是还是。我敢打赌,您的变量类型有问题。
您应该将它们丢弃,然后看看里面到底有什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。