Wie funktioniert array_udiff ()?

Hier ist der Code, es ist sehr einfach:

<code><?php
$tab = array (
    (object)array( 'id' => 1,),
    (object)array( 'id' => 4,),
    (object)array( 'id' => 12,),
    (object)array( 'id' => 22,),
    (object)array( 'id' => 25,),
);

$tab_json = array (
    (object)array( 'id' => 1,),
    (object)array( 'id' => 4,),
    (object)array( 'id' => 12,),
    (object)array( 'id' => 22,),
    (object)array( 'id' => 25,),
    (object)array( 'id' => 2,),
);
$difference = array_udiff($tab_json, $tab, function($a, $b) {
    echo $a->id." <-> ".$b->id."\n";
    return (count(array_diff_assoc(get_object_vars($a), get_object_vars($b))))>0;
});
?>
</code>

Hier ist die Ausgabe:

<code>12 <-> 4
12 <-> 1
12 <-> 22
12 <-> 25
2 <-> 12
4 <-> 25
4 <-> 1
22 <-> 4
25 <-> 1
12 <-> 4
12 <-> 1
12 <-> 22
25 <-> 12
4 <-> 22
1 <-> 4
1 <-> 22
1 <-> 4
1 <-> 1
1 <-> 25
25 <-> 4
25 <-> 1
25 <-> 12
25 <-> 25
25 <-> 4
4 <-> 1
4 <-> 12
4 <-> 25
4 <-> 22
22 <-> 1
22 <-> 12
22 <-> 25
22 <-> 12
12 <-> 1
12 <-> 12
12 <-> 2
2 <-> 12
2 <-> 25
</code>

Ich verstehe nicht, wie es berechnet wird12: es wird mehr als 10 Mal verglichen (wobei, soweit ich weiß, nicht mehr als die Anzahl der Elemente des zweiten Arrays verglichen werden sollte) und darüber hinaus wird es dreimal mit verglichen1!

Getestet am:

<code>PHP 5.3.9
PHP 5.3.2-1ubuntu4.14
</code>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage