我在检查数组中是否存在密钥时遇到了麻烦。我想做的是:
if(array_key_exists('hello',$myArray)) {
do stuff;
}
或:
if(isset($myArray['hello'])) {
do stuff;
}
但我认为我是以错误的方式做这件事,或类似的事情。我使用变量作为我的键名,所以当我设置数组键和值时,我会这样做:
//myArray = an array with some random words
foreach($myArray as $item) {
if($item == 'hello') {
//Create a new array to put stuff in
$myNewArray[$item] = 1;
}
}
但是,如果我后来想检查是否存在密钥'hello'(在数组中再次使用变量,只是为了它):
$item[0] = 'hello';
$item[1] = 'hello again sir';
if(array_key_exists($item[0], $myNewArray)) {
echo 'The key exists!';
} else {
echo 'The key does not exists';
}
//Output: The key does not exists
那么 - 关于我做错了什么的任何想法?有什么好方法可以解决这个问题吗?请注意;我已经尝试过将针头放在单引号之间。
更新 在我的实际代码中使用var_dump()的一些输出 - http://pastebin.com/5N1ZWC9f - 仍然没有真正理解为什么它不能正常工作?
答案 0 :(得分:0)
函数var_dump()
总能让您深入了解数组中的确切内容。这应该有助于调试代码。至于您的示例代码,我认为问题是您正在检查$myArray
我认为您要检查$myNewArray
;
if(array_key_exists($item[0],$myNewArray)) {
echo 'The key exists!';
} else {
echo 'The key does not exists';
}
答案 1 :(得分:0)
在你的上一部分:
if(array_key_exists($item[0],$myArray)) {
echo 'The key exists!';
} else {
echo 'The key does not exists';
}
您正在$ myArray中搜索,而不是在$ myNewArray中搜索。但这可能不是您的实际代码。 如果您这样做,您认为$ myNewArray中的键是什么:
print_r($myNewArray);
如果'hello'作为键,那么脚本应该回显'Key key!'
答案 2 :(得分:0)
我认为您正在检查密钥对值。因此'Hello'是值,'0'是关键。尝试将数组设置为:
$myArray = ('hello' => 'This is the value');
if (array_key_exists('hello',$myArray) {
echo 'I exist!';
}
试试。
答案 3 :(得分:0)
发现该值不是一个字符串,而是一个SimpleXML对象,这使得我无法比较它们(当然......)。初学者误以为我。