Online Example: https://3v4l.org/KcJMX, You can optimize your primary array, Just learn from function.xml-parse-into-struct.php, I hope you will do it.
Use xml_parser_create and xml_parse_into_struct to make your desire array.
Using xml_parse_into_struct you will got two array, one is indexes and other is values. So you can generate your desire result from those index and values, As you the indexes you call easily make the desire array.
Also look at those ($index, $vals) arrays.
$xml = '<soap:Body>
<CreateContact xmlns="http://www.tigerpawsoftware.com">
<pram>
<OfficePhoneNumber>8387909727</OfficePhoneNumber>
<EmailAddress>[email protected]</EmailAddress>
</pram>
</CreateContact>
</soap:Body>';
$p = xml_parser_create();
xml_parse_into_struct($p, $xml, $vals, $index);
xml_parser_free($p);
echo '<pre>';
$out = array("OfficePhoneNumber" => $vals[$index['OFFICEPHONENUMBER'][0]]['value'], "EmailAddress" => $vals[$index['EMAILADDRESS'][0]]['value']);
print_r($out);
Result
Array
(
[OfficePhoneNumber] => 8387909727
[EmailAddress] => [email protected]
)