如果数组1中存在数组1中的电子邮件地址(此处为uname1@email.com
),我想比较两个数组。在这种情况下,它应显示电子邮件已存在。
$Array1 = Array
(
[0] => Array
(
[username] => uname1
[name] => fullname1
[email] => uname1@email.com
)
[1] => Array
(
[username] => uname2
[name] => fullname2
[email] => uname2@email.com
)
[2] => Array
(
[username] => uname3
[name] => fullname3
[email] => uname3@@email.com
)
}
$Array2 = Array
(
[0] => Array
(
[username] => uname1
[name] => fullname1
[email] => uname1@email.com
)
}
答案 0 :(得分:1)
您可能需要考虑使用电子邮件作为密钥。像这样:
$a1 = array();
foreach ($Array1 as $v) $a1[$v['email']] = $v;
$a2 = array();
foreach ($Array2 as $v) $a2[$v['email']] = $v;
$intersection = array_values(array_intersect_key($a1, $a2));
这将生成一个数组,其中包含第二个数组中包含电子邮件的第一个数组的所有值。然后,您可以遍历该数组以显示错误消息。
答案 1 :(得分:1)
我会建立一个数组2的索引,其中电子邮件地址是关键:
$index = array();
foreach ($Array2 as $item) {
$index[$item['email']] = true;
}
然后,对于数组1中的每个项目,检查现有电子邮件地址的成本仅为O(1):
foreach ($Array1 as $item) {
if (isset($index[$item['email']])) {
echo 'email already exists';
}
}
答案 2 :(得分:0)
很标准。
<?php
function userExists() {
global $Array1, $Array2;
for($Array2 as $user) {
for($Array1 as $existingUser) {
if($user['email'] == $existingUser['email']) {
return true;
}
}
}
return false;
}
if(userExists())
echo 'user exists.';
?>
答案 3 :(得分:0)
很容易。
$result = array_search($Array2[0], $Array1)
var_dump($result);
如果您想检查是否找到了某些内容,请记住这样做:
if ($result !== false) { print "Found!"; }
原因是如果在$ Array1中的索引0处找到结果并将检查写为
,则array_search可以返回整数0 if ($result == false) { print "Not found"; }
在这种情况下,将打印“未找到”。