array_unique for arrays inside array
Asked Answered
E

3

22

I need a function like array_unique for arrays inside array.

The Case - should be equal, but output "not equal":

<?php
$arr=array(array('a',1),array('a',2));
$arr2=array_unique($arr);
if($arr2==$arr){
  echo "equal";
}
else{
  echo "not equal";
}
?>

How should the code be changed to get output "equal"?

Ebert answered 6/3, 2011 at 16:56 Comment(3)
Man, this always comes up. Read the manual, it says "Note that array_unique() is not intended to work on multi dimensional arrays."Picaroon
I asking for "like" solution, please read my questionEbert
I don't understand what you mean by "Hi, like array_unique for arrays inside array."Picaroon
K
54

You should modify your call for array_unique to have it include the SORT_REGULAR flag.

$arr2 = array_unique($arr, SORT_REGULAR);
Kaduna answered 6/3, 2011 at 17:9 Comment(0)
D
2

If you want to test if the outer array has unique entries, then stringify the inner contents first for a comparison:

$arr1 = array_map("serialize", $arr);
$arr2 = array_unique($arr1);
if ($arr2 == $arr1) {
Dimorphous answered 6/3, 2011 at 17:10 Comment(0)
C
-1
function array_unique_when_values_are_serializable($main_array) {
    return array_map('unserialize', array_values(array_unique(array_map('serialize', $main_array))));
}
Carolynncarolynne answered 3/4, 2015 at 19:31 Comment(1)
Please explain your answer. SO exists to teach users, not just answer questions.Muldon

© 2022 - 2024 — McMap. All rights reserved.