Как передать значения массива в переменные php?

#php #xml #api #usps

#php #xml #API #usps

Вопрос:

Я разрабатываю очень небольшое обновление для нашей текущей системы управления доставкой. Предполагается, что я создам php-скрипт для использования AddressValidate API из USPS, чтобы по существу использовать данный адрес и проверять его с помощью USPS. Конечно, USPS вернет правильно отформатированный адрес в виде массива. Мой вопрос в том, как мне преобразовать возвращаемые значения в переменную для каждого поля? (т.Е. адрес1, адрес2, город и т.д.), А затем отобразить этот результат следующим образом

Адрес1: переулок Хэппивилл, 123
Город: Питтсбург

Мой текущий скрипт: (мои данные были замаскированы с помощью *)

 <?php
$user = '****';
$xml_data = "<AddressValidateRequest USERID='$user'>" .
"<IncludeOptionalElements>true</IncludeOptionalElements>" .
"<ReturnCarrierRoute>true</ReturnCarrierRoute>" .
"<Address ID='0'>" .
"<FirmName />" .
"<Address1>123 happyville lane</Address1>" .
"<Address2></Address2>" .
"<City>columbus</City>" .
"<State>ohio</State>" .
"<Zip5></Zip5>" .
"<Zip4></Zip4>" .
"</Address>" .
"</AddressValidateRequest>";



$url = "http://production.shippingapis.com/ShippingAPI.dll?API=Verify";


    //setting the curl parameters.
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    // Following line is compulsary to add as it is:
    curl_setopt($ch, CURLOPT_POSTFIELDS,
                'XML=' . $xml_data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
    $output = curl_exec($ch);
    echo curl_error($ch);
    curl_close($ch);


print_r('<pre>');
print_r($array_data);
print_r('</pre>');
echo PHP_EOL;

  

Возвращаемый массив выглядит следующим образом:

 Array
(
    [Address] => Array
        (
            [@attributes] => Array
                (
                    [ID] => 0
                )

            [Address2] => 123 HAPPYVILLE LANE
            [City] => COLUMBUS
            [State] => OH
            [Zip5] => 12345
            [Zip4] => 1849
            [DeliveryPoint] => 18
            [CarrierRoute] => AC016
        )

)
  

Комментарии:

1. Я не понимаю, почему этот вопрос имеет VB.NET тег.

2. Упс! Это была ошибка. Я не уверен, как это изменить. 😛

Ответ №1:

 echo "Address1: ".$array_data["Address"]["Address2"]."<br>";
echo "City: ".$array_data["Address"]["City"] //wrong city in example :P
  

должно сработать
или, если есть больше адресов :

 foreach($array_data as $key=>$address){
    $address2=$array_data["Address"]["Address2"];//if you need the assignment
    echo "Address1: ".$address2."<br>";
    echo "City: ".$array_data["Address"]["City"] //wrong city in example :P
}
  

Комментарии:

1. Большое вам спасибо! Я знаю, что для вас это, вероятно, было очень просто, но я весь день занимался исследованиями и ни за что на свете не мог найти ответ, ха-ха!