PHP中的递归问题

PHP中的递归问题,php,xml,recursion,Php,Xml,Recursion,我需要从给定的数组()创建一个有效的xml 我的方法是这样的 protected function array2Xml($array) { $xml = ""; if(is_array($array)) { foreach($array as $key=>$value) { $xml .= "<$key>";

我需要从给定的数组()创建一个有效的xml

我的方法是这样的

protected function array2Xml($array)
    {
        $xml = "";

        if(is_array($array))
        {
            foreach($array as $key=>$value)
            {
                $xml .= "<$key>";

                if(is_array($value))
                {
                    $xml .= $this->array2Xml($value);
                }
                $xml .= "</$key>";
            }

            return $xml;
        }
        else
        {
            throw new Exception("in valid");
        }
    }


protected function createValidXMLfromArray($array,$node)
    {
        $xml = '<?xml version="1.0" encoding="ISO-8859-1"?>';

        $xmlArray = $this->array2Xml($array);

        $xml .= "<$node>$xmlArray</$node>";
        return $xml;
    }
错误在哪里?我在上面的递归中错了什么?

您忘记了“else”:

您忘记了“其他”:

也许吧

可能吧


您从未将值放入代码中;您的递归还可以,只是错过了提供数据这一至关重要的步骤。试试这个尺码:

protected function array2Xml($array)
    {
        $xml = "";

        if(is_array($array))
        {
            foreach($array as $key=>$value)
            {
                $xml .= "<$key>";

                if(is_array($value))
                {
                    $xml .= $this->array2Xml($value);
                }
                else {
                    $xml .= $value;
                }
                $xml .= "</$key>\n";
            }

            return $xml;
        }
        else
        {
            throw new Exception("in valid");
        }
    }
受保护函数array2Xml($array)
{
$xml=”“;
if(is_数组($array))
{
foreach($key=>$value的数组)
{
$xml.=“”;
if(是_数组($value))
{
$xml.=$this->array2Xml($value);
}
否则{
$xml.=$value;
}
$xml.=“\n”;
}
返回$xml;
}
其他的
{
抛出新异常(“处于有效状态”);
}
}

您从未将值放入代码中;您的递归还可以,只是错过了提供数据这一至关重要的步骤。试试这个尺码:

protected function array2Xml($array)
    {
        $xml = "";

        if(is_array($array))
        {
            foreach($array as $key=>$value)
            {
                $xml .= "<$key>";

                if(is_array($value))
                {
                    $xml .= $this->array2Xml($value);
                }
                else {
                    $xml .= $value;
                }
                $xml .= "</$key>\n";
            }

            return $xml;
        }
        else
        {
            throw new Exception("in valid");
        }
    }
受保护函数array2Xml($array)
{
$xml=”“;
if(is_数组($array))
{
foreach($key=>$value的数组)
{
$xml.=“”;
if(是_数组($value))
{
$xml.=$this->array2Xml($value);
}
否则{
$xml.=$value;
}
$xml.=“\n”;
}
返回$xml;
}
其他的
{
抛出新异常(“处于有效状态”);
}
}

在检查$value是否为数组后,您缺少一件事,需要添加其他内容 else$xml.=$value


如果您知道我的意思,您缺少一件事,在检查$value是否为数组后,您需要添加其他内容 else$xml.=$value


如果你知道我的意思

请注意:我建议使用DOM类创建XML请查看我的答案请注意:我建议使用DOM类创建XML请查看我的答案我不知道为什么,但我明白nodes@streetparade当前位置这与Dereleen的答案有什么不同?我不知道为什么,但我得到了一个答案nodes@streetparade:这与Dereleen的答案有什么不同?
 if(is_array($value)) {
      $xml .= $this->array2Xml($value);
 } else {
      $xml .= $value;
 }
if(is_array($value))
{
 $xml .= $this->array2Xml($value);
}
else
{
 $xml .= $value;
}
protected function array2Xml($array)
    {
        $xml = "";

        if(is_array($array))
        {
            foreach($array as $key=>$value)
            {
                $xml .= "<$key>";

                if(is_array($value))
                {
                    $xml .= $this->array2Xml($value);
                }
                else {
                    $xml .= $value;
                }
                $xml .= "</$key>\n";
            }

            return $xml;
        }
        else
        {
            throw new Exception("in valid");
        }
    }