Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziwne zachowanie tablic (+SimpleXML)
Forum PHP.pl > Forum > PHP
mikolajjj
Witam,
mam problem, który po prostu przerasta moją jaźn. mam w kodzie php zmienną zdefiniowaną z elementu innej tablicy i owa zmienna raz zachowuje się jak tablica a przy innym rodzaju wywołania jak zwykły string.
już tłumaczę - wyciągam z pliku xml-owego konkretne węzły biblioteką SimpleXML (wykorzystując ścieżki Xpath), nie będę wyjaśniał całego kodu tylko skupię się na fragmencie:

  1. $row = array();
  2. foreach ($paths as $path) {
  3. $data = $content->xpath($path);
  4. $data2 = $data[$i];
  5. echo '<td>'.$data[$i].'</td>';
  6.  
  7. echo '<pre>';
  8. print_r($data[$i]);
  9. echo '</pre>';
  10.  
  11. }


teraz tak: $content to dokument html, z którego wyciągam dane, $paths to zestaw ścieżek, no a $path to pojedyncza ścieżka (np. '//a'). to tłumaczę pro forma bo to działa. $data to skomplikowana tablica SimpleXML, zawierająca m. in. dane mnie interesujące, fragment tego wygląda tak:
  1. [0] => SimpleXMLElement Object
  2. (
  3. [@attributes] => Array
  4. (
  5. [onclick] => gbar.logger.il(1,{t:1});
  6. [class] => gbzt gbz0l gbp1
  7. [id] => gb_1
  8. )
  9.  
  10. [span] => Array
  11. (
  12. [0] => SimpleXMLElement Object
  13. (
  14. [@attributes] => Array
  15. (
  16. [class] => gbtb2
  17. )
  18.  
  19. )
  20.  
  21. [1] => Wyszukiwarka
  22. )
  23.  
  24. )
  25.  
  26. )

i teraz coś czego nie rozumiem, echo '<td>'.$data[$i].'</td>'; drukuje mi co innego (to co zażądałem ścieżką xpath), natomiast wydrukowanie TEJ SAMEJ zmiennej print_r daje mi taką rozbudowaną tablicę, to samo z co innego,

czy ktoś wie dlaczego tak się dzieje?
darko
Powodem może być to, że nie rzutujesz na string tego, co próbujesz wyciągnąć z pojedynczej gałęzi xml.
mikolajjj
no właśnie wydaje mi się, że poprawnie wyciąga bo to 'echo '<td>'.$data[$i].'</td>';' wywala mi tą daną, którą chce (i tutaj nie ma informacji, że to jest tablica, tylko wywala mi ładny string), a z kolei wywołanie 'print_r($data[$i]);' drukuje mi tą rozbudowaną tablicę.
pomijając wszystko inne, specyfikę simplexml itd, to to jest nie logiczne, bo dokładnie ta sama zmienna ($data[$i]) zachowuje się raz tak raz tak.

jest to o tyle uciążliwe, że chciałbym sobie te dane uporządkować do nowej tablicy, a nie mogę.
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.