public function decode_message($param)
{
$kind = $param->kindOf();
if ($kind === 'scalar') {
return $param->scalarval();
} elseif ($kind === 'array') {
reset($param->me);
$b = current($param->me);
$arr = array();
for ($i = 0, $c = count($b); $i < $c; $i++) {
$arr[] = $this->decode_message($param->me['array'][$i]);
}
return $arr;
} elseif ($kind === 'struct') {
reset($param->me['struct']);
$arr = array();
while (list($key, $value) = each($param->me['struct'])) {
$arr[$key] = $this->decode_message($value);
}
return $arr;
}
}