Monday 27 August 2018

PHP array_udiff_assoc

array_udiff_assoc

(PHP 5)
array_udiff_assoc - Calculate the difference in arrays with additional index checking, using the callback function to compare values

Description

array array_udiff_assoc (array array1, array array2 [, array ..., callback data_compare_func])
array_udiff_assoc () returns an array containing all the values ​​of array1 that are not present in subsequent arguments. Note that keys are used for comparison, in contrast to the functions array_diff () and array_udiff () . To compare array values, a user-defined callback function is used. In this sense, the behavior of array_udiff_assoc () differs from the behavior of array_diff_assoc () , which uses the built-in function to compare values.
Example 1. Example using array_udiff_assoc ()
class cr {
    private $priv_member;
    function cr($val) 
    {
        $this->priv_member = $val;
    }
    
    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);
The result of this example:
Array (
 [0.1] => cr Object ([priv_member: private] => 9) 
 [0.5] => cr Object ([priv_member: private] => 12)
 [0] => cr Object ([priv_member: private] => 23))

0 comments:

Post a Comment