array_udiff_assoc

Computes the difference of arrays with additional index check, compares data by a callback function

&reftitle.description; `array` `array_udiff_assoc` `array` `array` `array` `arrays` `callable` `value_compare_func`

Computes the difference of arrays with additional index check, compares data by a callback function.

Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using, for example, `array_udiff_assoc($array1[0], $array2[0], "some_comparison_func");`.

&reftitle.parameters;

`array`

- The first array.

`arrays`

- Arrays to compare against.

`value_compare_func`

- &sort.callback.description;
&reftitle.returnvalues;

`array_udiff_assoc` returns an `array` containing all the values from `array` that are not present in any of the other arguments. Note that the keys are used in the comparison unlike `array_diff` and `array_udiff`. The comparison of arrays' data is performed by using an user-supplied callback. In this aspect the behaviour is opposite to the behaviour of `array_diff_assoc` which uses internal function for comparison.

&reftitle.examples;

### `array_udiff_assoc` example

    <?php
    class cr {
        private $priv_member;
        function __construct($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_assoc($a, $b, array("cr", "comp_func_cr"));
    print_r($result);
    ?>

&example.outputs;

    Array
    (
        [0.1] => cr Object
            (
                [priv_member:private] => 9
            )

        [0.5] => cr Object
            (
                [priv_member:private] => 12
            )

        [0] => cr Object
            (
                [priv_member:private] => 23
            )
    )

In our example above you see the `"1" => new cr(4)` pair is present in both arrays and thus it is not in the output from the function.

&reftitle.seealso;

- `array_diff`
- `array_diff_assoc`
- `array_diff_uassoc`
- `array_udiff`
- `array_udiff_uassoc`
- `array_intersect`
- `array_intersect_assoc`
- `array_uintersect`
- `array_uintersect_assoc`
- `array_uintersect_uassoc`