如何从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