2010-04-27 6 views
0

Я звоню функцию мыла, которая возвращает следующий массив:Как я могу получить значения из сложного массива в PHP?

Array ([FastAddressResult] => Array ([IsError] => false [ErrorNumber] => 0 [ErrorMessage] => [Results] => Array ([Address] => Array ([Id] => 13872147.00 [OrganisationName] => [DepartmentName] => [Line1] => Methley Grove [Line2] => [Line3] => [Line4] => [Line5] => [PostTown] => Leeds [County] => West Yorkshire [Postcode] => LS7 3PA [Mailsort] => 64121 [Barcode] => [IsResidential] => false [IsSmallOrganisation] => false [IsLargeOrganisation] => false [RawData] => [GeographicData] => Array ([GridEastM] => 0 [GridNorthM] => 0 [Objective2] => false [Transitional] => false [Longitude] => 0 [Latitude] => 0 [WGS84Longitude] => 0 [WGS84Latitude] => 0))))

Мне нужно exstract значения следующих не похоже на работу:

$this->adressline1 = $result->FastAddressResult->Results->Address->Line1; 
+2

* (ссылка) * http://de3.php.net/manual/en/language.types. array.php – Gordon

+1

'$ result-> FastAddressResult-> Results-> Address-> Line1;' было бы правильным, если бы это была серия вложенных объектов, а не массивов. –

+0

Почему вы рассматриваете массив как объект? -> для доступа к свойствам и методу объекта, я должен использовать обозначение массива с квадратной скобкой –

ответ

6

Try:

$this->adressline1 = $result[ "FastAddressResult" ][ "Results" ][ "Address" ][ "Line1" ]; 

Вы хотите использовать $ result-> fastAddressResult-> etc, если $ result был объектом. Проверьте this page для получения дополнительной информации о массивах PHP.

Кроме того, такой сложный массив имеет определенные дизайнерские запахи. Вы могли бы подумать о том, как сделать его более простым и понятным.

+0

Это те типы массивов, которые вы возвращаете из вызова SOAP. Его структура XML выражается как набор рекурсивных хэшей. –

1

Очевидно кто-то не обратил внимание в классе программирования, когда они покрыты Массивы ...

$this->adressline1 = $result['FastAddressResult']['Results']['Address']['Line1']; 

или преобразовать массив к StdClass первым:

$data = (object) $myarray; 

но вы должны были бы сделайте это для всех массивов в этом тоже, так что нет.

+0

Я понял, почему я рассматривал его как объект, потому что я использовал SOAPCLIENT, который почему-то возвращал std-класс. Недавно я заменил серверы и вместо этого должен был реализовать NUSOAP –

1

использования, как это,

массив хранится в некоторой переменной называется $ Рез

echo $res[ "FastAddressResult" ][ "Results" ][ "Address" ][ "Line1" ];