我有一个从我运行的SQL查询生成的数组,它看起来像这样:
$arr[$i]['id'] = $id;
$arr[$i]['name'] = $name;
$arr[$i]['email'] = $email;
如何从邮件列获取唯一值?感谢您的帮助。
最佳答案是:
array_unique(array_column($arr, 'email'))
可以在MySQL中使用DISTINCT方法在列中进行过滤,或者使用类似以下的方法:
$uniqueEmails = array();
foreach($arr as $array)
{
if(!in_array($array['email'], $uniqueEmails)
$uniqueEmails[] = $array['email'];
}
in_array()
调用是不高效的。使用array_column()
然后再使用array_unique()
更加优雅,也可能更加高效。 - mickmackusa$allEmails = array_column($arr, 'email');
$uniqueEmails = array_unique($allEmails);
考虑同一个数组,但第三个索引的id值不同:
$all_array = Array
(
[0] => Array
(
[id] => 1
[value] => 111
)
[1] => Array
(
[id] => 2
[value] => 222
)
[2] => Array
(
[id] => 3
[value] => 333
)
[3] => Array
(
[id] => 4
[value] => 111
)
)
$unique_arr = array_unique( array_column( $all_array , 'value' ) );
print_r( array_intersect_key( $all_array, $unique_arr ) );
$all_array
中的所有数组列来解决问题。谢谢! - KittMedia$uniqueEmails = array();
$lastemail = '';
foreach($arr as $array)
{
if($array['email'] != $lastemail)
{
$uniqueEmails[] = $array['email'];
$lastemail = $array['email'];
}
}