可扩展标记语言是一个很好的旧数据交换格式,现在基本已经被json取代了。但可悲的是在WEB开发中 仍然存在并用于存储和交换数据。如果你想学习 的相关知识,那么本教程对你将有很大的帮助。

 

PHP将多维数组转换为

下面是我们要实现PHP多维数组转换 的步骤。

步骤1:创建一个名称为array2 ()的函数,该函数用于将数组换换为 :该功能将通过给定的多维数组不断迭代,并添加每个(键,值)对与PHP的的帮助下单独的 节点的Simple 类。

步骤-2:接着定义PHP关联或多维数组进行转换。

步骤3:创建的Simple 类的新实例。

步骤4:回调到函数array2 ()的阵列到一个 对象(在步骤2中定义)转换。

步骤5:最后保存生成的 作为文件。

代码如下:

<?php
// function to convert multi-dimensional array to  
function array2 ($obj, $array)
{
    foreach ($array as $key => $value)
    {
        if(is_numeric($key))
            $key = \'item\' . $key;

        if (is_array($value))
        {
            $node = $obj->addChild($key);
            array2 ($node, $value);
        }
        else
        {
            $obj->addChild($key, htmlspecialchars($value));
        }
    }
}

// define php multi-dimensional array
$my_array = array (
    \'0\' => array (
        \'id\' => \'XYZ100\',
        \'personal\' => array (
            \'name\' =>\'Ashton Cox\',
            \'gender\' => \'Male\',
            \'age\' => 32,
            \'address\' => array (
                 \'street\' => \'7 24th Street\',
                 \'city\' => \'New York\',
                 \'state\' => \'NY\',
                 \'zipcode\' => \'10038\'
             )
        ),
        \'profile\' => array (
            \'position\' => \'Team Lead\',
            \'department\' => \'Software\'
        )
    ),
    \'1\' => array (
        \'id\' => \'XYZ121\',
        \'personal\' => array (
            \'name\' => \'Rhona Davidson\',
            \'gender\' => \'Female\',
            \'age\' => 40,
            \'address\' => array (
                 \'street\' => \'S2 115th Street\',
                 \'city\' => \'New York\',
                 \'state\' => \'NY\',
                 \'zipcode\' => \'10100\'
             )
        ),
        \'profile\' => array (
            \'position\' => \'Integration Specialist\',
            \'department\' => \'Operations\'
        )
    )
);

// create new instance of simple 
$  = new Simple Element(\'<root/>\');

// function callback
array2 ($ , $my_array);

// save as   file
echo (($ ->as (\'data. \')) ? \'Your   file has been generated successfully!\' : \'Error generating   file!\');
?>

正如你可以看到array2 ()是一个递归函数,几乎经过多次深度解析数组。这也将与数字键关联数组工作,并将其作为<item0> <item1>为 不允许像数字键控节点<0> <1> <2> ......并把他们视为无效。

该方法的addChild()将一个 节点添加到该对象。

声明新的Simple Element(“<root/>');将创建一个 对象与顶级节点<root> </root>

该生产线$ -> as (“data. ')将保存 字符串为”data. '文件。请务必提供保存在不同位置的文件的完整文件路径。

现在运行上面的脚本,并没有任何错误生成的 文件。

收藏 打印