获取 PHP 关联数组中的项目

Get items in a PHP associative array

这是我的数组:

$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 中,但我仍然收到“无效的电子邮件或密钥!”留言。

这些值与每个 记录不匹配,因此它将始终显示该错误。您只需要在循环遍历数组中的每个项目但未找到匹配项后设置该错误。

$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!";
}

既然你有一个关联数组,你实际上可以不用循环来做这个:

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

工作example