The PHP Web Services blog has a helpful hint on getting a custom SOAP request all ready to go:
How do you get this [custom] XML to be output by the SoapClient?
Using the SoapVar method and a few newly created objects, making a custom structure is simple. It's just a matter of encoding the object and setting it with the base() method in the PHP SOAP extension. Check out the blog post for an example of both the custom XML and the code to produce it.