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:
Popracuję jeszcze nad tym, aby to wszystko zamknęło się w jednej funkcji tymczasem pozdrawiam
<?php $obiekty = http://www.php.net/array(); $result = http://www.php.net/array(); function xml2array( $obj, &$tree ) { foreach( (http://www.php.net/array)$obj as $key => $val ) { if( http://www.php.net/is_object( $val ) ) { xml2array( $val, $tree ); } else { $tree[$key] = $val; } } } function walkArrays( $arr, &$result ) { foreach( $arr as $key => $val ) { if( http://www.php.net/is_object( $val ) ) { $result[$key] = (http://www.php.net/array)$val; } if( http://www.php.net/is_array( $val ) ) { walkArrays( $val, $result[$key] ); } if( http://www.php.net/is_string( $val ) ) { $result[$key] = (string)$val; } } } $o = simplexml_load_file( 'xml.xml' ); recursive_obj2array( $o, $obiekty ); walkArrays( $obiekty, $result ); http://www.php.net/echo '<pre>'; http://www.php.net/print_r( $result ); http://www.php.net/echo '</pre>'; ?>
<?php function object2array ( $object ) { if ( !http://www.php.net/is_object ( $object ) ) return $object; $return = http://www.php.net/array (); $var = get_object_vars ( $object ); while ( list ( $k, $v ) = http://www.php.net/each ( $var ) ) $return [ $k ] = object2array ( $v ); return $return; } ?>
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)