Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Algorytmy, klasy, funkcje _ simplexml2array

Napisany przez: aleksander 18.01.2005, 22:38:57

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 = http://www.php.net/array();
  3. $result = http://www.php.net/array();
  4. function xml2array( $obj, &$tree )
  5. {
  6. foreach( (http://www.php.net/array)$obj as $key => $val )
  7. {
  8. if( http://www.php.net/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( http://www.php.net/is_object( $val ) )
  23. {
  24. $result[$key] = (http://www.php.net/array)$val;
  25. }
  26. if( http://www.php.net/is_array( $val ) )
  27. {
  28. walkArrays( $val, $result[$key] );
  29. }
  30. if( http://www.php.net/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. http://www.php.net/echo '<pre>';
  42. http://www.php.net/print_r( $result );
  43. http://www.php.net/echo '</pre>';
  44. ?>
Popracuję jeszcze nad tym, aby to wszystko zamknęło się w jednej funkcji smile.gif tymczasem pozdrawiam

Napisany przez: NuLL 15.06.2005, 16:33:15

  1. <?php
  2.  
  3. function object2array ( $object )
  4. {
  5.  if ( !http://www.php.net/is_object ( $object ) )
  6.  return $object;
  7.  
  8.  $return = http://www.php.net/array ();
  9.  
  10.  $var = get_object_vars ( $object );
  11.  
  12.  while ( list ( $k, $v ) = http://www.php.net/each ( $var ) )
  13.  $return [ $k ] = object2array ( $v );
  14.  return $return;
  15. }
  16.  
  17. ?>

Trochę krótsza smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)