<?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> <refentry xml:id="function.array-udiff" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>array_udiff</refname> <refpurpose>Computes the difference of arrays by using a callback function for data comparison</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>array</type><methodname>array_udiff</methodname> <methodparam><type>array</type><parameter>array1</parameter></methodparam> <methodparam><type>array</type><parameter>array2</parameter></methodparam> <methodparam choice="opt"><type>array</type><parameter> ...</parameter></methodparam> <methodparam><type>callback</type><parameter>data_compare_func</parameter></methodparam> </methodsynopsis> <para> Computes the difference of arrays by using a callback function for data comparison. This is unlike <function>array_diff</function> which uses an internal function for comparing the data. </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>array1</parameter></term> <listitem> <para> The first array. </para> </listitem> </varlistentry> <varlistentry> <term><parameter>array2</parameter></term> <listitem> <para> The second array. </para> </listitem> </varlistentry> <varlistentry> <term><parameter>data_compare_func</parameter></term> <listitem> <para> The callback comparison function. </para> <para> The user supplied callback function is used for comparison. It must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second. </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> Returns an array containing all the values of <parameter>array1</parameter> that are not present in any of the other arguments. </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>array_udiff</function> example</title> <programlisting role="php"> <![CDATA[ <?php class cr { private $priv_member; function cr($val) { $this->priv_member = $val; } static function comp_func_cr($a, $b) { if ($a->priv_member === $b->priv_member) return 0; return ($a->priv_member > $b->priv_member)? 1:-1; } } $a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),); $b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),); $result = array_udiff($a, $b, array("cr", "comp_func_cr")); print_r($result); ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ Array ( [0.5] => cr Object ( [priv_member:private] => 12 ) [0] => cr Object ( [priv_member:private] => 23 ) ) ]]> </screen> </example> </para> </refsect1> <refsect1 role="notes"> &reftitle.notes; <note> <simpara> Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using <literal>array_udiff($array1[0], $array2[0], "data_compare_func");</literal>. </simpara> </note> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>array_diff</function></member> <member><function>array_diff_assoc</function></member> <member><function>array_diff_uassoc</function></member> <member><function>array_udiff_assoc</function></member> <member><function>array_udiff_uassoc</function></member> <member><function>array_intersect</function></member> <member><function>array_intersect_assoc</function></member> <member><function>array_uintersect</function></member> <member><function>array_uintersect_assoc</function></member> <member><function>array_uintersect_uassoc</function></member> </simplelist> </para> </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 -->