Guest User

Untitled

a guest
May 22nd, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. function get_yandex_human_address( $geo_object ) {
  2. $geo_object = json_decode( $geo_object, true );
  3. $geo_object = $geo_object['response'];
  4. $geo_object = $geo_object['GeoObjectCollection']['featureMember'][0]['GeoObject'];
  5.  
  6. $declaration = array(
  7. 'CountryName' => 'country',
  8. 'AdministrativeAreaName' => 'area',
  9. 'SubAdministrativeAreaName' => 'subarea',
  10. 'LocalityName' => 'city',
  11. 'DependentLocalityName' => 'subcity',
  12. 'ThoroughfareName' => 'street',
  13. 'PremiseNumber' => 'house'
  14. );
  15. $parseParams = array(
  16. 'Country',
  17. 'CountryName',
  18. 'AdministrativeArea',
  19. 'AdministrativeAreaName',
  20. 'Locality',
  21. 'LocalityName',
  22. 'Thoroughfare',
  23. 'ThoroughfareName',
  24. 'Premise',
  25. 'PremiseNumber',
  26. 'DependentLocality',
  27. 'DependentLocalityName',
  28. 'SubAdministrativeArea',
  29. 'SubAdministrativeAreaName'
  30. );
  31. $level = $geo_object['metaDataProperty']['GeocoderMetaData']['AddressDetails'];
  32.  
  33. $result = array();
  34. $nextLevel = 0;
  35.  
  36. while ( 1 ) {
  37. $goDeeper = false;
  38. foreach ( $level as $key => $val ) {
  39. if ( in_array( $key, $parseParams ) ) {
  40. if ( is_array( $level[ $key ] ) ) {
  41. $nextLevel = $level[ $key ];
  42. $goDeeper = true;
  43. } else {
  44. foreach ( $declaration as $declKey => $declVal ) {
  45. if ( $declKey == $key ) {
  46. $result[ $declaration[ $key ] ] = $level[ $key ];
  47. }
  48. }
  49. }
  50. }
  51. }
  52. if ( $goDeeper ) {
  53. $level = $nextLevel; //we need to go deeper ;)
  54. } else {
  55. break;
  56. }
  57. }
  58.  
  59. return $result;
  60. }
Add Comment
Please, Sign In to add comment