第一种方法:源码如下。

<?php
$elementLevel = 0 ;
function array_ ($array, $keys = \'\')
{
global $elementLevel;
if(!is_array($array))
{
  if($keys == \'\'){
  return $array;
  }else{
  return \"\\n<$keys>\" . $array . \"</$keys>\\n\";
  }
}else{
  foreach ($array as $key => $value)
  {
  $haveTag = true;
  if (is_numeric($key))
  {
   $key = $keys;
   $haveTag = false;
  }
  /* http://www.manongjc.com/article/1586.html */
  if($elementLevel == 0 )
  {
   $startElement = \"<$key>\";
   $endElement = \"</$key>\";
  }
  $text .= $startElement;
  if(!$haveTag)
  {
   $elementLevel++;
   $text .= \"<$key>\" . array_ ($value, $key). \"</$key>\\n\";
  }else{
   $elementLevel++;
   $text .= array_ ($value, $key);
  }
  $text .= $endElement;
  }
}
return $text;
}
$array = array(
\"employees\" => array(
\"employee\" => array(
array(
\"name\" => \"name one\",
\"position\" => \"position one\"
),
array(
\"name\" => \"name two\",
\"position\" => \"position two\"
),
array(
\"name\" => \"name three\",
\"position\" => \"position three\"
)
)
)
);
echo array_ ($array);
?>

 

第二种方法:

这种方法可以支持多维数组

test.php

<?php
include \'./ArrayTo .php\';
header(\'Content-Type:   text/ \');
$data=array(\"name\"=>\"zhangsan\",\"sex\"=>\"0\",\"address\"=>array(\"sheng\"=>\"chongqing\",\"shi\"=>\"nanchuan\",\"zhen\"=>\"daguan\"));
echo ArrayTo ::to ($data);
?>

处理代码:ArrayTo .php

<?php
class ArrayTo 
{
 /**
  * The main function for converting to an   document.
  * Pass in a multi dimensional array and this recrusively loops through and builds up an   document.
  *
  * @param array $data
  * @param string $rootNodeName - what you want the root node to be - defaultsto data.
  * @param Simple Element $  - should only be used recursively
  * @return string  
  */
 public static function to ($data, $rootNodeName = \'data\', $ =null)
 {
  // turn off compatibility mode as simple   throws a wobbly if you don\'t.
  if (ini_get(\'zend.ze1_compatibility_mode\') == 1)
  {
   //  http://www.manongjc.com
   ini_set (\'zend.ze1_compatibility_mode\', 0);
  }
  if ($  == null)
  {
   $  = simple _load_string(\"<?  version=\'1.0\' encoding=\'utf-8\'?><$rootNodeName />\");
  }
  // loop through the data passed in.
  foreach($data as $key => $value)
  {
   // no numeric keys in our   please!
   if (is_numeric($key))
   {
    // make string key...
    $key = \"unknownNode_\". (string) $key;
   }
   // replace anything not alpha numeric
   $key = preg_replace(\'/[^a-z]/i\', \'\', $key);
   // if there is another array found recrusively call this function
   if (is_array($value))
   {
    $node = $ ->addChild($key);
    // recrusive call.
    ArrayTo ::to ($value, $rootNodeName, $node);
   }
   else
   {
    // add single node.
    $value = htmlentities($value);
    $ ->addChild($key,$value);
   }
  }
  // pass back as string. or simple     if you want!
  return $ ->as ();
 }
}

 

上面两种方法都可以实现将数组转化为 ,希望对大家有一定的帮助。

收藏 打印