为soap请求php创建参数数组

I want to create a soap request, I've xml request sample but the array that I've created getting wrong structure.

The Sample that should my array should be like:

<soap:Envelope xmlns:xsi="XMLSchema-instance" xmlns:xsd="XMLSchema" xmlns:soap="envelope">
  <soap:Header>
    <AuthenticationSoapHeader xmlns="http://example.com/ws">
      <WSUserName>USERNAME</WSUserName>
      <WSPassword>PASSWORD</WSPassword>
    </AuthenticationSoapHeader>
  </soap:Header>
  <soap:Body>
    <SearchFlight xmlns="http://example.com/ws">
      <OTA_AirLowFareSearchRQ ProviderType="OnlyAmadeus" RefundableType="OnlyRefundable" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="0">
        <OriginDestinationInformation>
          <DepartureDateTime>2019-02-03T00:01:00</DepartureDateTime>
          <OriginLocation LocationCode="FRA" />
          <DestinationLocation LocationCode="AMS" />
        </OriginDestinationInformation>

        <TravelerInfoSummary>
          <AirTravelerAvail>
            <PassengerTypeQuantity Code="ADT" />
          </AirTravelerAvail>
        </TravelerInfoSummary>
      </OTA_AirLowFareSearchRQ>
    </SearchFlight>
  </soap:Body>
</soap:Envelope>

I've tried the following:

$client = new SoapClient($soapURL,array("trace"=>1));
$auth = array(
    'WSUserName' => 'USERNAME',
    'WSPassword' => 'PASSWORD'
);
$header = new SoapHeader($location,'authentification',$auth,false);
$client->__setSoapHeaders($header);
$params = array(
    'OTA_AirLowFareSearchRQ' => array(
        '_' => array(
            'OriginDestinationInformation' => array(
                'DepartureDateTime' => '2019-02-25T00:01:00',
                'OriginLocation' => array(
                    '_' => '',
                    'LocationCode' => 'FRA'
                ),
                'DestinationLocation' => array(
                    '_' => '',
                    'LocationCode' => 'AMS'
                )
            ),
            'TravelerInfoSummary' => array(
                'AirTravelerAvail' => array(
                    'PassengerTypeQuantity' => array(
                        '_' => '',
                        'Code' => 'ADT'
                    )
                )
            )
        ),
        'ProviderType' => 'OnlyAmadeus',
        'RefundableType' => 'AllFlights'
    )
);
$searchResponse = $client->__soapCall("SearchFlight", array($params));
var_dump($client->__getLastRequest());

But I'm getting the following which is wrong:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://example.com/ws" xmlns:ns2="http://example.com/ws">
    <SOAP-ENV:Header>
        <ns2:authentification>
            <item>
                <key>WSUserName</key><value>USERNAME</value>
            </item>
            <item>
                <key>WSPassword</key><value>PASSWORD</value>
            </item>
        </ns2:authentification>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ns1:SearchFlight>
            <ns1:OTA_AirLowFareSearchRQ RefundableType="AllFlights" ProviderType="OnlyAmadeus"/>
        </ns1:SearchFlight>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

How Can I make it work, please consider the header authentication as in the example