Make sure to always cast your parameters prior to creating a SoapParam. Otherwise you will wind up with an incorrect xsi:type and possibly no value.
$value = 0;
$param0 = new SoapParam(
$value, $param0_name);
will give you:
<$param0_name xsi:type="xsd:null"></$param0_name>
while:
$value = 0;
$param0 = new SoapParam(
(int)$value, $param0_name);
<$param0_name xsi:type="xsd:int">0</$param0_name>
which is probably what you want.