天天看點

php删除多元數組重複數,如何從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_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