PHPからXML-RPC2を使用して、MTのエントリーにカテゴリを付けようとしてどはまり。

$client = XML_RPC2_Client::create('http://example.jp/cgi-bin/mt/mt-xmlrpc.cgi', array('prefix' => 'mt.', 'encoding' => 'utf-8', 'debug' => true));
try {
$result = $client->setPostCategories($entry_id, $user, $pass, array( 'categoryId' => '200' ));
  var_dump($result);
} catch (XML_RPC2_FaultException $e) {
  var_dump($e);
} catch (Exception $e) {
  var_dump($e);
}

上記のようなコードで $entry_id のエントリにカテゴリID'200' を付加しようとしたところ

Not an ARRAY reference at /var/www/cgi-bin/mt/lib/MT/XMLRPCServer.pm line 988

こんなエラーになってしまう。

「配列のリファレンスが探してるのと違う」的なエラーのもよう。スペルミスはしてないしなーと試行錯誤すること数時間。次のようにしたらtrue(成功)が帰ってきた。

$client = XML_RPC2_Client::create('http://example.jp/cgi-bin/mt/mt-xmlrpc.cgi', array('prefix' => 'mt.', 'encoding' => 'utf-8', 'debug' => true));
try {
$result = $client->setPostCategories($entry_id, $user, $pass, array( array( 'categoryId' => '200' )));
  var_dump($result);
} catch (XML_RPC2_FaultException $e) {
  var_dump($e);
} catch (Exception $e) {
  var_dump($e);
}

'categoryId' が固定だから複数カテゴリを列挙したりisPrimaryをつけるにはこうなるのかー。。