Как я могу получить значения из сложного массива в PHP? - PullRequest
0 голосов
/ 27 апреля 2010

Я вызываю функцию мыла, которая возвращает следующий массив:

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 ) ) ) )

Мне нужно вычленить значения, следующие не работают:

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

Ответы [ 3 ]

6 голосов
/ 27 апреля 2010

Попробуйте:

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

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

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

1 голос
/ 27 апреля 2010

Используйте вот так,

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

   echo $res[ "FastAddressResult" ][ "Results" ][ "Address" ][ "Line1" ];
1 голос
/ 27 апреля 2010

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

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

или сначала преобразовать массив в класс stdClass:

$data = (object) $myarray;

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

...