如何将Php中的多维数组转换为XML
我有一个类似的数组如何将Php中的多维数组转换为XML,php,xml,arrays,multidimensional-array,Php,Xml,Arrays,Multidimensional Array,我有一个类似的数组 $a = array( 'aaa' => "sample", 'bbb' => "sample2", 'ccc' => "adas", 'ddd' => "2", 'eee' => '2013-09-05', 'fff' => "false", 'ggg' => "893", 'qqq' => '2013-09-05', 'sss' => array(
$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>";
}
}
$data='';
foreach($a为$k=>$v){
if(is_数组($k)){
$data.=''.$v.'';
foreach($k为$j=>m){
if(is_数组($j)){
foreach($j为$s=>$p){
$data.=''.$p.'';
}
}否则{
$data.=''.$m.'';
}
}
}否则{
$data.=''.$v.'';
}
}
但它不起作用。我可以用另一种语言使用hashmaps,但必须用php。我怎样才能做到这一点
谢谢。你可以试试这个:
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;
函数createXml($array,$level=0)
{
$xml=($level==0)?“”。PHP\u EOL:“”;
$tab=str_pad(“”,$level',str_pad_LEFT);
foreach($node=>$value的数组)
{
$xml.=“{$tab}”;
如果(!是_数组($value))
{
$xml.=$value;
}
其他的
{
$level++;
$xml.=PHP_EOL.createXml($value,$level)。$tab;
}
$xml.=''.PHP\u EOL;
}
返回$xml;
}
$xml=createXml($a);
echo$xml;
您应该使用递归@BORA S.A.的可能重复项。我知道,但我不会使用此函数。因为我有另一个控件,在它转换为第一个答案之前。我解决了我的问题。下面是代码code
函数createXml($x){$r='';foreach($x as$key=>$value):$r.=(is_数组($value))?“”。foreach_x($value)。“”:“$value”;endforeach;return$r;}code
您的函数在维度超过2的数组上不起作用。此外,没有名为“foreach_x”的任意函数。如果这是您创建的函数,那么为什么要创建两个函数,其中一个就足够了?你试过建议的功能吗?是的,我试过它和它的工作。我试过三维的。我忘了将foreach_x更改为createXml。