[英]PHP Unique Values from Column in Array
我有一個從我運行的 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'];
}
自 PHP 5.5 起,還提供了一個名為array_column()的新函數。 您可以通過以下方式使用它:
$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
)
)
現在,1 和 4 具有相同的值。 所以我們想刪除它們中的任何一個:
$unique_arr = array_unique( array_column( $all_array , 'value' ) );
print_r( array_intersect_key( $all_array, $unique_arr ) );
如果您從 SQL 獲得按電子郵件排序的列表,您可以通過像 Gareth 那樣循環遍歷數組來提高性能,但只將當前電子郵件地址與最后插入的電子郵件地址進行比較。 下面是一個代碼示例:
$uniqueEmails = array();
$lastemail = '';
foreach($arr as $array)
{
if($array['email'] != $lastemail)
{
$uniqueEmails[] = $array['email'];
$lastemail = $array['email'];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.