php 数组 xml json xml相互转换的方法

发布时间:2020-05-05编辑:脚本学堂
首先,来看array->xml。
<?php
function array2xml($array, $tag) { function ia2xml($array) {
$xml="";
foreach ($array as $key=>$value) {

首先,来看array->xml。
<?php
function array2xml($array, $tag) {

    function ia2xml($array) {
        $xml="";
        foreach ($array as $key=>$value) {
            if (is_array($value)) {
                $xml.="<$key>".ia2xml($value)."</$key>";
            } else {
                $xml.="<$key>".$value."</$key>";
            }
        }
        return $xml;
    }

    return simplexml_load_string("<$tag>".ia2xml($array)."</$tag>");
}

$test['type']='lunch';
$test['time']='12:30';
$test['menu']=array('entree'=>'salad', 'maincourse'=>'steak');

echo array2xml($test,"meal")->asXML();
?>

其次,xml->array。
方法一:
function xml2phpArray($xml,$arr){
        $iter = 0;
        foreach($xml->children() as $b){
            $a = $b->getName();
            if(!$b->children()){
                $arr[$a] = trim($b[0]);
            }else{
                $arr[$a][$iter] = array();
                $arr[$a][$iter] = xml2phpArray($b,$arr[$a][$iter]);
                $iter++;
            }
        }
        return $arr;
    }

$xml = <<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
<a><c>ccc</c><e>eee</e></a>
</note>
XML;

print_r(xml2phpArray(simplexml_load_string ( $xml ),array()));

方法二:
function XML2Array ( $xml , $recursive = false )
{
    if ( ! $recursive )
    {
        $array = simplexml_load_string ( $xml ) ;
    }
    else
    {
        $array = $xml ;
    }
   
    $newArray = array () ;
    $array = ( array ) $array ;
    foreach ( $array as $key => $value )
    {
        $value = ( array ) $value ;
        if ( isset ( $value [ 0 ] ) )
        {
            $newArray [ $key ] = trim ( $value [ 0 ] ) ;
        }
        else
        {
            $newArray [ $key ] = XML2Array ( $value , true ) ;
        }
    }
    return $newArray ;
}

$xml = <<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
<a><b><c>ccc</c></b><e>eee</e></a>
</note>
XML;

print_r(XML2Array($xml));

来看json->array。
json_decode($json,true);//第二个参数为true时 即为array
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));

最后,来看array->json
json_encode 数组->json
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);