Tôi đang tạo lớp mã hóa địa lý có thể sử dụng nhiều dịch vụ web cho mã hóa địa lý (ví dụ: Google, Yahoo, Bing, v.v.). Tôi đang cố gắng làm cho nó theo cách mà các dịch vụ web mới có thể được cấu hình dễ dàng. Hầu hết các dịch vụ web trả về XML/JSON .. cho PHP tôi đã chọn XML làm trọng tâm chính của tôi. Tất cả các mã đã được tại chỗ, nhưng bây giờ Google ví dụ trả về XML sau (chuyển thành một simple_xml_element)Tự động truy cập đối tượng lồng nhau
SimpleXMLElement Object
(
[status] => OK
[result] => Array
(
[0] => SimpleXMLElement Object
(
[type] => postal_code
[formatted_address] => 1010 Lausanne, Switzerland
[address_component] => Array
(
[0] => SimpleXMLElement Object
(
[long_name] => 1010
[short_name] => 1010
[type] => postal_code
)
[1] => SimpleXMLElement Object
(
[long_name] => Lausanne
[short_name] => Lausanne
[type] => Array
(
[0] => locality
[1] => political
)
)
[2] => SimpleXMLElement Object
(
[long_name] => Vaud
[short_name] => VD
[type] => Array
(
[0] => administrative_area_level_1
[1] => political
)
)
[3] => SimpleXMLElement Object
(
[long_name] => Switzerland
[short_name] => CH
[type] => Array
(
[0] => country
[1] => political
)
)
)
[geometry] => SimpleXMLElement Object
(
[location] => SimpleXMLElement Object
(
[lat] => 46.5376186
[lng] => 6.6539665
)
[location_type] => APPROXIMATE
[viewport] => SimpleXMLElement Object
(
[southwest] => SimpleXMLElement Object
(
[lat] => 46.5253574
[lng] => 6.6384420
)
[northeast] => SimpleXMLElement Object
(
[lat] => 46.5467887
[lng] => 6.6745222
)
)
[bounds] => SimpleXMLElement Object
(
[southwest] => SimpleXMLElement Object
(
[lat] => 46.5253574
[lng] => 6.6384420
)
[northeast] => SimpleXMLElement Object
(
[lat] => 46.5467887
[lng] => 6.6745222
)
)
)
)
)
Thông tin mà tôi cần là trong [vị trí] thẻ, vì vậy tôi đã cố gắng lưu trữ các con đường trong một var:
$lat_path = 'result[0]->geometry->location->lat;
Và sau đó cố gắng truy cập vào các giá trị theo cách này:
(suppose $xml is the object)
$xml->{$lat_path};
Nhưng điều này doens't làm việc. Có cách nào tôi có thể truy cập thông tin động hoặc biến dựa trên. Tôi không muốn hủy hoại phương pháp mã hóa địa lý của mình bằng mã cụ thể của Google.
Cảm ơn!
Sử dụng [SimpleXMLElement :: xpath] (http://www.php.net/manual/simplexmlelement.xpath.php) thay vì ký hiệu phản đối php. (nếu bạn có thể hiển thị một số xml, tôi sẽ cố gắng cung cấp ví dụ) – Yoshi
Bạn có thể viết phương thức đó và quên .. – Vytautas
Tôi đã thử sử dụng Xpath, nhưng nó không hoạt động: ( print_r ($ xml-> Xpath ('geometry/location')); cho tôi một mảng trống. –