array_udiff_uassoc

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

&reftitle.description; `array` `array_udiff_uassoc` `array` `array` `array` `arrays` `callable` `value_compare_func` `callable` `key_compare_func`

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

Note that the keys are used in the comparison unlike `array_diff` and `array_udiff`.

&reftitle.parameters;

`array`

- The first array.

`arrays`

- Arrays to compare against.

`value_compare_func`

- &sort.callback.description; &sort.callback.description.presort;

`key_compare_func`

- The comparison of keys (indices) is done also by the callback function `key_compare_func`. This behaviour is unlike what `array_udiff_assoc` does, since the latter compares the indices by using an internal function.

&reftitle.returnvalues;

Returns an `array` containing all the values from `array` that are not present in any of the other arguments.

&reftitle.examples;

### `array_udiff_uassoc` 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;
        }

        static function comp_func_key($a, $b)
        {
            if ($a === $b) return 0;
            return ($a > $b)? 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_uassoc($a, $b, array("cr", "comp_func_cr"), array("cr", "comp_func_key"));
    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. Keep in mind that you have to supply 2 callback functions.

&reftitle.notes;

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_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func");`.

&reftitle.seealso;

- `array_diff`
- `array_diff_assoc`
- `array_udiff`
- `array_udiff_assoc`
- `array_intersect`
- `array_intersect_assoc`
- `array_uintersect`
- `array_uintersect_assoc`
- `array_uintersect_uassoc`