array_udiff / コールバック関数

PHPのコールバック関数の使い方を学習いたしました。グローバルなものなら関数名だけ渡せばいいけど、クラスに属する関数を渡す時($obj->funcを渡したい時)は array( $obj, 'func' ); ってな感じで渡さないといけないんですね(最初見たときなんで配列渡してるのか分からんかった...)。
array_udiff(差分)の使い方が分からなくて調べてたんですが。とりあえずメモしておこう。

<?php
class Foo
{
  function createArray( $id, $name, $price ) {
    return array( 'id' => $id, 'name' => $name, 'price' => $price );
  }
  
  function myComp( $a, $b ) {
    if ( $a['id'] == $b['id'] ) return 0;
    return ($a['id'] < $b['id']) ? -1 : 1;
  }

  public function test() {
    $ar1 = array( $this->createArray( 1, 'pen', 120 ),
                  $this->createArray( 2, 'book', 3000 ),
                  $this->createArray( 3, 'john', 250 ),
                  $this->createArray( 4, 'potato', 10000 ),
                  $this->createArray( 5, 'drink', 147 ), );

    $ar2 = array( $this->createArray( 1, 0, 0 ),
                  $this->createArray( 3, 0, 0 ),
                  $this->createArray( 5, 0, 0 ), );
    
    $ar3 = array_udiff( $ar1, $ar2,
                        array( & $this, 'myComp' ) );
    
    echo '<pre>'; print_r( $ar3 ); echo '</pre>';
  }
}

$f = new Foo();
$f->test();
?>

出力:

Array
(
    [1] => Array
        (
            [id] => 2
            [name] => book
            [price] => 3000
        )

    [3] => Array
        (
            [id] => 4
            [name] => potato
            [price] => 10000
        )

)

array_udiff : http://jp.php.net/manual/ja/function.array-udiff.php
配列関数目次 : http://jp.php.net/manual/ja/ref.array.php