7

I am checking the array_unique function. The manual says that it will also sort the values. But I cannot see that it is sorting the values. Please see my sample code.

$input = array("a" => "green", 3=>"red", "b" => "green", 1=>"blue", "red");
print_r($input);
$result = array_unique($input,SORT_STRING);
print_r($result);

The output is

Array
(
    [a] => green
    [3] => red
    [b] => green
    [1] => blue
    [4] => red
)
Array
(
    [a] => green
    [3] => red
    [1] => blue
)

Here the array $result is not sorted. Any help is appreciated.

Thank you Pramod

Pramod Sivadas
  • 873
  • 2
  • 9
  • 28
  • 1
    The manual doesn't say, that it is sorting values the second parameter is used for comparing the items. – user4035 Aug 16 '14 at 07:26

3 Answers3

8

array_unique:

Takes an input array and returns a new array without duplicate values.

Note that keys are preserved. array_unique() keeps the first key encountered for every value, and ignore all following keys.

you can try this to get the result:

<?php 
$input = array("a" => "green", 3=>"red", "b" => "green", 1=>"blue", "red");
print_r($input);
$result = array_unique($input);
print_r($result);
asort($result);
print_r($result);
Suchit kumar
  • 11,809
  • 3
  • 22
  • 44
5

The manual does not say it will sort the array elements, it says that the sort_flags parameters modifies the sorting behavior.

The optional second parameter sort_flags may be used to modify the sorting behavior using these values: [...]

The sorting behavior is used to sort the array values in order to perform the comparison and determine whether one element is considered to be equal to another. It does not modify the order of the underlying array.

If you want to sort your array, you'll have to do that as a separate operation. Documentation on array sorting can be found here.

For a default ascending sort based on the array's values, you could use asort.

Robby Cornelissen
  • 91,784
  • 22
  • 134
  • 156
1

array_unique takes an input array and returns a new array without duplicate values. It doesn't sort actually. Read more at http://php.net/manual/en/function.array-unique.php

Dipak G.
  • 715
  • 1
  • 4
  • 18