获取PHP关联数组中的项



这是我的数组:

$keyArr = array(12345 => array("somto@gmail.com", "james@yahoo.com",), 54321 => array("munz@gmail.com",));

下面是我的声明:

foreach ($keyArr as $dbkey => $dbvalue){
if (!in_array($email, $dbvalue) && $dbkey != $key || in_array($email, $dbvalue) && $dbkey != $key || !in_array($email, $dbvalue) && $dbkey == $key){
$errors['key'] = "Invalid email or key!";
}
}

假设我在$keyArr中创建了一个变量,如:

$key = 12345;
$email = "somto@gmail.com";

我期望程序没有输出,因为$key和$email的值存在于$keyArr中,但是我仍然得到"Invalid email or key!"消息。

由于您有一个关联数组,因此实际上可以不使用循环来执行此操作:

if (!array_key_exists($key, $keyArr) || !in_array($email, $keyArr[$key])) {
$errors['key'] = "Invalid email or key!";
}

工作的例子。

这些值与每条记录不匹配,因此它将始终显示该错误。只有在循环遍历数组中的每个项并且没有找到匹配项时,才需要设置该错误。

$error = true;
foreach ($keyArr as $dbkey => $emailAddresses){
if ($dbkey === $key && in_array($email, $emailAddresses)) {
// MATCH! Break out of the loop before we can set the error message
$error = false;    
break; 
}
}
if ($error) {
$errors['key'] = "Invalid email or key!";
}

最新更新