php - array_udiff_uassoc

Description

array array_udiff_uassoc ( array $array1, array $array2 [, array $ ..., callback $data_compare_func, callback $key_compare_func] )
array_udiff_uassoc() returns an array containing all the values from array1 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 : data_compare_func. In this aspect the behaviour is opposite to the behaviour of array_diff_assoc() which uses internal function for comparison. 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.

Example 276. array_udiff_uassoc() example
<?phpclass 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;
 }

 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);
?>
The above example will output:
Array
(
   [0.1] => cr Object
       (
           [priv_member:private] => 9
       )

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

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

No comments:

Post a Comment