Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z tablicą PHP
Forum PHP.pl > Forum > Przedszkole
northwest
Witam serdecznie,
Wiecie może jak wyciągnąć z takiej tablicy:
  1. Array ( [name] => Gdańsk, Sopocka 51 [Status] => Array ( [code] => 200 [request] => geocode ) [Placemark] => Array ( [0] => Array ( [id] => p1 [address] => Sopocka 51, 84-230 Gdańsk, Poland [AddressDetails] => Array ( [Accuracy] => 8 [Country] => Array ( [AdministrativeArea] => Array ( [AdministrativeAreaName] => Pomorskie [SubAdministrativeArea] => Array ( [Locality] => Array ( [LocalityName] => Rumia [Thoroughfare] => Array ( [ThoroughfareName] =>Sopocka) ) [SubAdministrativeAreaName] => Gdańsk) ) [CountryName] => Polska [CountryNameCode] => PL ) ) [ExtendedData] => Array ( [LatLonBox] => Array ( [north] => 54.5648415 [south] => 54.5585463 [east] => 18.4093206 [west] => 18.4030254 ) ) [Point] => Array ( [coordinates] => Array ( [0] => 32.305176 [1] => 51.4616337 [2] => 0 ) ) ) ) )


współrzędne? chodzi o parametr coordinates]... chciałbym przypisać to do 2 zmiennych...


Z góry dzięki za pomoc,
Northwest
darko
  1. // przykładowa tablica o strukturze podobnej do Twojej
  2. $a = array('a' => 'b', 'c' => array('d' => array('e' => array('coordinates' => array(0 => 32.305176, 1 => 51.4616337, 2 => 0)))));
  3.  
  4. function ar(array $a, $back_key = null) {
  5. $r = array();
  6. foreach($a as $k => $v) {
  7. //echo $k . ' - ' . $v . '<br/>';
  8. if(is_array($v)) {
  9. if($k == 'coordinates') {
  10. $r = ar($v, $k);
  11. }
  12. else {
  13. $r = ar($v);
  14. }
  15. }
  16. if(!is_null($back_key)) {
  17. $r[] = $v;
  18. }
  19. }
  20. if(!is_null($back_key)) {
  21. return $r;
  22. }
  23. return $r;
  24. }
  25. $c = ar($a);
  26. $coordinates_x = $c[0];
  27. $coordinates_y = $c[1];
  28.  
  29. echo 'x: '.$coordinates_x . ' <br/>y: ' . $coordinates_y;

Już bardziej namieszać nie mogłem, ale działa (nie znalazłem funkcji, która potrafi wyciągnąć wartości po nazwie klucza).
// edit
oho, jednak coś można znaleźć, takie pseudo przeciwieństwo array_search w przykładach pod opisem tej funkcji

// edit 2
... nawet działa:

  1. // dalsza część kodu (alternatywa):
  2. ///////
  3. echo "<hr/>";
  4. ///////
  5.  
  6. function extract_values_by_key ( $array, $needle_key, &$out = array () ) {
  7. foreach ( (array) $array as $key => $value ) {
  8. if ( ! is_array ( $value ) && $key == $needle_key ) {
  9. array_push ( $out, $value );
  10. }
  11. else {
  12. extract_values_by_key ( $value, $needle_key, &$out );
  13. }
  14. }
  15.  
  16. return $out;
  17. }
  18.  
  19. $temp = extract_values_by_key($a, 'coordinates');
  20. $x = $temp[1]; $y = $temp[2];
  21.  
  22. echo 'x: '.$x . ' <br/>y: ' . $y;

[za:] http://php.net/manual/en/function.array-search.php
northwest
działa, dzięki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.