<?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> <refentry xml:id="function.array-unique" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>array_unique</refname> <refpurpose>Removes duplicate values from an array</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>array</type><methodname>array_unique</methodname> <methodparam><type>array</type><parameter>array</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>sort_flags</parameter><initializer>SORT_STRING</initializer></methodparam> </methodsynopsis> <para> Takes an input <parameter>array</parameter> and returns a new array without duplicate values. </para> <para> Note that keys are preserved. <function>array_unique</function> sorts the values treated as 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 <parameter>array</parameter> will be kept. </para> <note> <simpara> Two elements are considered equal if and only if <literal>(string) $elem1 === (string) $elem2</literal>. In words: when the string representation is the same. </simpara> <simpara> The first element will be used. </simpara> </note> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>array</parameter></term> <listitem> <para> The input array. </para> </listitem> </varlistentry> <varlistentry> <term><parameter>sort_flags</parameter></term> <listitem> <para> The optional second parameter <parameter>sort_flags</parameter> may be used to modify the sorting behavior using these values: </para> <para> Sorting type flags: <itemizedlist> <listitem> <simpara><constant>SORT_REGULAR</constant> - compare items normally (don't change types)</simpara> </listitem> <listitem> <simpara><constant>SORT_NUMERIC</constant> - compare items numerically</simpara> </listitem> <listitem> <simpara><constant>SORT_STRING</constant> - compare items as strings</simpara> </listitem> <listitem> <simpara><constant>SORT_LOCALE_STRING</constant> - compare items as strings, based on the current locale. <!-- FIXME: PHP_6 Before PHP 6, it uses the system locale, which can be changed using <function>setlocale</function>. Since PHP 6, you must use the <function>i18n_loc_set_default</function> function. --> </simpara> </listitem> </itemizedlist> </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> Returns the filtered array. </para> </refsect1> <refsect1 role="changelog"> &reftitle.changelog; <para> <informaltable> <tgroup cols="2"> <thead> <row> <entry>&Version;</entry> <entry>&Description;</entry> </row> </thead> <tbody> <row> <entry>5.2.10</entry> <entry> Changed the default value of <parameter>sort_flags</parameter> back to <constant>SORT_STRING</constant>. </entry> </row> <row> <entry>5.2.9</entry> <entry> Added the optional <parameter>sort_flags</parameter> defaulting to <constant>SORT_REGULAR</constant>. Prior to 5.2.9, this function used to sort the array with <constant>SORT_STRING</constant> internally. </entry> </row> </tbody> </tgroup> </informaltable> </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>array_unique</function> example</title> <programlisting role="php"> <![CDATA[ <?php $input = array("a" => "green", "red", "b" => "green", "blue", "red"); $result = array_unique($input); print_r($result); ?> ]]> </programlisting> &example.outputs; <screen role="php"> <![CDATA[ Array ( [a] => green [0] => red [1] => blue ) ]]> </screen> </example> </para> <para> <example> <title><function>array_unique</function> and types</title> <programlisting role="php"> <![CDATA[ <?php $input = array(4, "4", "3", 4, 3, "3"); $result = array_unique($input); var_dump($result); ?> ]]> </programlisting> &example.outputs; <screen role="php"> <![CDATA[ array(2) { [0] => int(4) [2] => string(1) "3" } ]]> </screen> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>array_count_values</function></member> </simplelist> </para> </refsect1> <refsect1 role="notes"> &reftitle.notes; <note> <simpara> Note that <function>array_unique</function> is not intended to work on multi dimensional arrays. </simpara> </note> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"~/.phpdoc/manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->