<?php
require_once 'SOAP/Server.php';

$server = new SOAP_Server;

class 
SOAP_Example_Server {
    var 
$__dispatch_map = array();
    
    function 
SOAP_Interop_GroupB() {
    
$this->__dispatch_map['echoStructAsSimpleTypes'] =
        array(
'in' => array('inputStruct' => 'SOAPStruct'),
              
'out' => array(
                        
'outputString' => 'string'
                        
'outputInteger' => 'int'
                        
'outputFloat' => 'float')
              );
    }
    
    function &
echoStructAsSimpleTypes (&$struct)
    {
    
# convert a SOAPStruct to an array
    
return array(
        new 
SOAP_Value('outputString','string',$struct->varString),
        new 
SOAP_Value('outputInteger','int',$struct->varInt),
        new 
SOAP_Value('outputFloat','float',$struct->varFloat)
        );
    }
}

$soapclass = new SOAP_Example_Server();
$server->addObjectMap($soapclass,'urn:SOAP_Example_Server');
$server->service($HTTP_RAW_POST_DATA);
?>
Client for Example Server

<?
$client = SoapObject(
    'http://localhost/SOAP/example/exampleserver.php');

class SOAPStruct {
    var $varString;
    var $varInt;
    var $varFloat;
    function SOAPStruct($s=NULL, $i=NULL, $f=NULL) {
        $this->varString = $s;
        $this->varInt = $i;
        $this->varFloat = $f;
    }
}

$struct = new SOAPStruct('test string',123,123.123);

list($string, $int, $float) = 
    $client->call("echoStructAsSimpleTypes",$struct,$options);
?>