Unique PHP array values

I have an array like this

Array ( [0] => Array ( [id] => BA [name] => British Airways ) [1] => Array ( [id] => BA [name] => British Airways ) [2] => Array ( [id] => LA [name] => Lanchile ) [3] => Array ( [id] => LA [name] => Lanchile ) [4] => Array ( [id] => BA [name] => British Airways ) [5] => Array ( [id] => BA [name] => British Airways ) ) 

and i want to get

 Array ( [0] => Array ( [id] => BA [name] => British Airways ) [1] => Array ( [id] => LA [name] => Lanchile ) ) 

but after using the array_unique function, all i have is

 Array ( [0] => Array ( [id] => BA [name] => British Airways ) ) 

what am I doing wrong?

+6
source share
4 answers
 array_unique(my_array, SORT_REGULAR) 

As stated in the comments. :)

+17
source

As mentioned, array_unique does not support multidimensional arrays, but you can iterate over data and create your own

 <?php $airlines = array( array('id' => 'BA', 'name' => 'British Airways'), array('id' => 'LA', 'name' => 'Lanchile'), array('id' => 'BA', 'name' => 'British Airways'), array('id' => 'LA', 'name' => 'Lanchile'), array('id' => 'BA', 'name' => 'British Airways'), array('id' => 'LA', 'name' => 'Lanchile'), ); $tmp = array(); foreach ($airlines as $item) { if (!in_array($item['id'], $tmp)) { $unique[] = $item; $tmp[] = $item['id']; } } var_dump($unique); // $unqiue will have your desired results in it var_dump was just for testing 
+4
source
  array_unique is not intended to work on multi dimensional arrays. 

You need to encode an array

array_unique

+2
source
 $airlines = array( array('id' => 'BA', 'name' => 'British Airways'), array('id' => 'LA', 'name' => 'Lanchile'), array('id' => 'BA', 'name' => 'British Airways'), array('id' => 'LA', 'name' => 'Lanchile'), array('id' => 'BA', 'name' => 'British Airways'), array('id' => 'LA', 'name' => 'Lanchile'), ); $unique = array_map( 'unserialize', array_unique( array_map( 'serialize', $airlines ) ) ); var_dump($unique); 
+1
source

Source: https://habr.com/ru/post/944202/


All Articles