w3resource

PHP: array_unique() function

PHP: Removes duplicate values from an array

The array_unique() is used to remove duplicate values from an array.

Note: The keys are preserved. array_unique() sorts the values treated as a string at first, then will keep the first key encountered for every value, and ignore all following keys. It does not mean that the key of the first related value from the unsorted array will be kept.

Version:

(PHP 4 and above)

Syntax:

array_unique(array1, sort_flags)

Parameters:

Name Description Required /
Optional
Type
array1 The input array. Required Array
sort_flags sort_flags is used to modify the sorting behavior using following values:
SORT_REGULAR - compare items normally.
SORT_NUMERIC - compare items numerically
SORT_STRING - compare items as strings
SORT_LOCALE_STRING - compare items as strings, based on the current locale
Optional Integer

Note: Two elements are considered equal if and only if (string) $elem1 === (string) $elem2 i.e. when the string representation is the same, the first element will be used.

Return value

The filtered array.

Value Type: Array

Example:

<?php
$fruits_list = array('Orange',  'Apple', ' Banana', 'Cherry', ' Banana');
$result = array_unique($fruits_list);
print_r($result);
?>

Output:

Array ( [0] => Orange [1] => Apple [2] => Banana [3] => Cherry ) 

Pictorial Presentation:

php function reference: array_unique() function

View the example in the browser

Practice here online :

See also

PHP Function Reference

Previous: array_sum
Next: array_unshift



PHP: Tips of the Day

$GLOBALS: An associative array containing references to all variables which are currently defined in the global scope of the script. The variable names are the keys of the array

Example:

<?php
$myGlobal = "global"; // declare variable outside of scope
function test()
{
$myLocal = "local"; // declare variable inside of scope
 // both variables are printed
 var_dump($myLocal);
 var_dump($GLOBALS["myGlobal"]);
}
test(); // run function
// only $myGlobal is printed since $myLocal is not globally scoped
 
var_dump($myLocal);
var_dump($myGlobal); 
?>

Output:

string(5) "local"
string(6) "global"
NULL
string(6) "global"

In the above example $myLocal is not displayed the second time because it is declared inside the test() function and then destroyed after the function is closed.

Becoming global

To remedy this there are two options.

Option one: global keyword

function test()
{
 global $myLocal;
 $myLocal = "local";
 var_dump($myLocal);
 var_dump($GLOBALS["myGlobal"]);
}

The global keyword is a prefix on a variable that forces it to be part of the global scope.

Note that you cannot assign a value to a variable in the same statement as the global keyword. Hence, why I had to assign a value underneath. (It is possible if you remove new lines and spaces but I don't think it is neat. global $myLocal; $myLocal = "local").

Option two: $GLOBALS array

function test()
{
 $GLOBALS["myLocal"] = "local";
 $myLocal = $GLOBALS["myLocal"];
 var_dump($myLocal);
 var_dump($GLOBALS["myGlobal"]);
}

In this example I reassigned $myLocal the value of $GLOBAL["myLocal"] since I find it easier writing a variable name rather than the associative array.