如何從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_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',
),
)
但仍然得到重複的答案.似乎對原始陣列沒有影響.
解決方法:
首先,從5.2.9開始,您可以使用更簡單的版本,取自this answer:
array_unique($array, SORT_REGULAR);
在這種情況下,array_unique()實際上給出了正确的輸出;這裡的事情是你的數組中有兩個不同的鍵:“follower_userid”和“following_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));
标簽:php,arrays
來源: https://codeday.me/bug/20190708/1405877.html