2014-03-03 112 views
4

如何從PHP中的多維數組中刪除重複值?如何在PHP中重新刪除多維數組中的重複值

初始陣列:

array (
    0 => 
    array (
    'following_userid' => '88', 
), 
    1 => 
    array (
    'following_userid' => '89', 
), 
    2 => 
    array (
    'following_userid' => '287', 
), 
    3 => 
    array (
    'following_userid' => '346', 
), 
    4 => 
    array (
    'following_userid' => '405', 
), 
    5 => 
    array (
    'following_userid' => '284', 
), 
    6 => 
    array (
    'following_userid' => '583', 
), 
    7 => 
    array (
    'following_userid' => '587', 
), 
    8 => 
    array (
    'following_userid' => '655', 
), 
    9 => 
    array (
    'following_userid' => '95', 
), 
    10 => 
    array (
    'follower_userid' => '89', 
), 
    11 => 
    array (
    'follower_userid' => '88', 
), 
    12 => 
    array (
    'follower_userid' => '353', 
), 
    13 => 
    array (
    'follower_userid' => '42', 
), 
    14 => 
    array (
    'follower_userid' => '626', 
), 
    15 => 
    array (
    'follower_userid' => '655', 
), 
    16 => 
    array (
    'follower_userid' => '95', 
), 
) 

作爲每How to remove duplicate values from a multi-dimensional array in PHP建議我用$input = array_map("unserialize", array_unique(array_map("serialize", $input)));

Array,執行array_unique()後:

array (
    0 => 
    array (
    'following_userid' => '88', 
), 
    1 => 
    array (
    'following_userid' => '89', 
), 
    2 => 
    array (
    'following_userid' => '287', 
), 
    3 => 
    array (
    'following_userid' => '346', 
), 
    4 => 
    array (
    'following_userid' => '405', 
), 
    5 => 
    array (
    'following_userid' => '284', 
), 
    6 => 
    array (
    'following_userid' => '583', 
), 
    7 => 
    array (
    'following_userid' => '587', 
), 
    8 => 
    array (
    'following_userid' => '655', 
), 
    9 => 
    array (
    'following_userid' => '95', 
), 
    10 => 
    array (
    'follower_userid' => '89', 
), 
    11 => 
    array (
    'follower_userid' => '88', 
), 
    12 => 
    array (
    'follower_userid' => '353', 
), 
    13 => 
    array (
    'follower_userid' => '42', 
), 
    14 => 
    array (
    'follower_userid' => '626', 
), 
    15 => 
    array (
    'follower_userid' => '655', 
), 
    16 => 
    array (
    'follower_userid' => '95', 
), 
) 

但是仍然得到重複的答案。似乎對原始數組沒有影響。

回答

1

首先,因爲5.2.9可以使用更簡單的版本,從this answer採取:

array_unique($array, SORT_REGULAR); 

在這種情況下,實際上array_unique()給出正確的輸出;這裏的事情是,你有兩個不同的密鑰數組中:「跟隨 _userid」和「下 _userid 」,因此要獲得的唯一ID的不管是鑰匙,你必須首先正常化它:

array_map('current', $array); 

這樣做需要每個數組的第一個元素,並使用該第一個元素的值創建一個新數組。

輸出:

Array 
(
    [0] => 88 
    [1] => 89 
    [2] => 287 
    [3] => 346 
    [4] => 405 
    [5] => 284 
    [6] => 583 
    [7] => 587 
    [8] => 655 
    [9] => 95 
    [10] => 89 
    [11] => 88 
    [12] => 353 
    [13] => 42 
    [14] => 626 
    [15] => 655 
    [16] => 95 
); 

,然後應用array_unique()

array_unique(array_map('current', $array)); 
0

如果它總是隻會剛纔的follower_userid,你可以只拼合陣列下來是這樣的:

$followers = array(); 
foreach ($input as $item) { 
    $followers[] = $item['followers_userid']; 
} 

$followers = array_unique($followers);