【问题标题】:How Can I Convert a Multidimensional Array in Php to XML如何将 PHP 中的多维数组转换为 XML
【发布时间】:2013-09-11 11:05:42
【问题描述】:

我有一个像

这样的数组
$a = array(
    'aaa' => "sample",
    'bbb' => "sample2",
    'ccc' => "adas",
    'ddd' => "2",
    'eee' => '2013-09-05',
    'fff' => "false",
    'ggg' => "893",
    'qqq' => '2013-09-05',
    'sss' => array(
        "iii" => array(
            'vvv' => "sample3",
            'xxx' => 500,
        )
    ),
    'nnn' => '2013-09-05',
    'mmm' => "Normal",
);

我想将它转换为 xml,但不使用 SimpleXMLElement 或其他函数。这就是为什么我试图用 foreach 来做这件事。这是我的代码;

$data = '';
foreach ($a as $k => $v) {

    if (is_array($k)) {
        $data .= "<a:$k>" . $v . "</a:$k>";
        foreach ($k as $j => $m) {
            if (is_array($j)) {
                foreach ($j as $s => $p) {
                    $data .= "<a:$s>" . $p . "</a:$s>";
                }
            } else {
                $data .= "<a:$j>" . $m . "</a:$j>";
            }
        }
    } else {
        $data .= "<a:$k>" . $v . "</a:$k>";
    }
}

但它不起作用。我可以使它与另一种语言的哈希图一起工作,但它必须是 php。我怎样才能做到这一点。

谢谢。

【问题讨论】:

  • 你应该使用递归
  • @BORA S.A. 我知道,但我不会使用此功能。因为在转换之前我还有另一个控件

标签: php xml arrays multidimensional-array


【解决方案1】:

你可以试试这个:

function createXml($array, $level = 0)
{
  $xml = ($level == 0) ? '<?xml version="1.0" encoding="ISO-8859-1"?>'.PHP_EOL : '';
  $tab = str_pad('', $level, '  ', STR_PAD_LEFT);

  foreach($array as $node => $value)
  {
    $xml .= "{$tab}<{$node}>";
    if(!is_array($value))
    {
      $xml .= $value;
    }
    else
    {
      $level++;
      $xml .= PHP_EOL.createXml($value, $level).$tab;
    }
    $xml .= "</{$node}>".PHP_EOL;
  }
  return $xml;
}

$xml = createXml($a);
echo $xml;

【讨论】:

  • 第一个坦克寻求答案。我解决了我的问题。这里是代码code function createXml($x) { $r = ''; foreach ($x as $key => $value) : $r .= (is_array($value)) ? “”。 foreach_x($value) 。 "$key>" : "$value$key>";结束;返回 $r; } code
  • 您的函数不适用于二维以上的数组。也没有称为“foreach_x”的任意函数。如果这是您创建的函数,那么为什么要创建两个函数就足够了?你试过推荐的功能了吗?
  • 是的,我已经尝试过了。我已经尝试了 3 个维度。我忘记将 foreach_x 更改为 createXml。
猜你喜欢
  • 2015-04-04
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多