Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: simplexml2array
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
aleksander
witam,

Znalazłem na php.net funkcję do konwersji drzewa obiektów simplexml na tablice. niestety miała ona błąd (można o tym poczytać na http://forum.php.pl/index.php?showtopic=24918 ). Po wielu staraniach udało mi się obejść ten "bug". Oto mój twór:
  1. <?php
  2. $obiekty = array();
  3. $result = array();
  4. function xml2array( $obj, &$tree )
  5. {
  6. foreach( (array)$obj as $key => $val )
  7. {
  8. if( is_object( $val ) )
  9. {
  10. xml2array( $val, $tree );
  11. }
  12. else
  13. {
  14. $tree[$key] = $val;
  15. }
  16. }
  17. }
  18. function walkArrays( $arr, &$result )
  19. {
  20. foreach( $arr as $key => $val )
  21. {
  22. if( is_object( $val ) )
  23. {
  24. $result[$key] = (array)$val;
  25. }
  26. if( is_array( $val ) )
  27. {
  28. walkArrays( $val, $result[$key] );
  29. }
  30. if( is_string( $val ) )
  31. {
  32. $result[$key] = (string)$val;
  33. }
  34. }
  35. }
  36.  
  37.  
  38. $o = simplexml_load_file( 'xml.xml' );
  39. recursive_obj2array( $o, $obiekty );
  40. walkArrays( $obiekty, $result );
  41. echo '<pre>';
  42. print_r( $result );
  43. echo '</pre>';
  44. ?>
Popracuję jeszcze nad tym, aby to wszystko zamknęło się w jednej funkcji smile.gif tymczasem pozdrawiam
NuLL
  1. <?php
  2.  
  3. function object2array ( $object )
  4. {
  5.  if ( !is_object ( $object ) )
  6.  return $object;
  7.  
  8.  $return = array ();
  9.  
  10.  $var = get_object_vars ( $object );
  11.  
  12.  while ( list ( $k, $v ) = each ( $var ) )
  13.  $return [ $k ] = object2array ( $v );
  14.  return $return;
  15. }
  16.  
  17. ?>

Trochę krótsza 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.