如何在PHP中将数组转换为Simple 对象?

最简单的方法:

<?php

$test_array = array (
  \'bla\' => \'blub\',
  \'foo\' => \'bar\',
  \'another_array\' => array (
    \'stack\' => \'overflow\',
  ),
);
$  = new Simple Element(\'<root/>\');
array_walk_recursive($test_array, array ($ , \'addChild\'));
print $ ->as ();

结果是

<?  version=\"1.0\"?>
<root>
  <blub>bla</blub>
  <bar>foo</bar>
  <overflow>stack</overflow>
</root>

键和值是交换的 - 您可以使用array_flip()在array_walk之前修复它。

 

再看一个实例:

这是php 5.2代码,它将任何深度的数组转换为 文档:

Array
(
    [\'total_stud\']=> 500
    [0] => Array
        (
            [student] => Array
                (
                    [id] => 1
                    [name] => abc
                    [address] => Array
                        (
                            [city]=>Pune
                            [zip]=>411006
                        )                       
                )
        )
    [1] => Array
        (
            [student] => Array
                (
                    [id] => 2
                    [name] => xyz
                    [address] => Array
                        (
                            [city]=>Mumbai
                            [zip]=>400906
                        )   
                )

        )
)

生成的 将如下:

<?  version=\"1.0\"?>
<student_info>
    <total_stud>500</total_stud>
    <student>
        <id>1</id>
        <name>abc</name>
        <address>
            <city>Pune</city>
            <zip>411006</zip>
        </address>
    </student>
    <student>
        <id>1</id>
        <name>abc</name>
        <address>
            <city>Mumbai</city>
            <zip>400906</zip>
        </address>
    </student>
</student_info>

PHP代码段

<?php
// function defination to convert array to  
function array_to_ ( $data, &$ _data ) {
    foreach( $data as $key => $value ) {
        if( is_numeric($key) ){
            $key = \'item\'.$key; //dealing with <0/>..<n/> issues
        }
        if( is_array($value) ) {
            $subnode = $ _data->addChild($key);
            array_to_ ($value, $subnode);
        } else {
            $ _data->addChild(\"$key\",htmlspecialchars(\"$value\"));
        }
     }
}

// initializing or creating array
$data = array(\'total_stud\' => 500);

// creating   of Simple Element
$ _data = new Simple Element(\'<?  version=\"1.0\"?><data></data>\');

// function call to convert array to  
array_to_ ($data,$ _data);

//saving generated   file; 
$result = $ _data->as (\'/file/path/name. \');

?>
收藏 打印