@ 2013-08-28T14:41:46Z <?php
$context = [
'mes' => [
'attributes' => [
't' => 'AddEvent',
'id' => 'test_id',
],
'ev' => [
'attributes' => [
'evt' => 'packet20130828ki3si0',
'src' => 'NVV',
'st' => 'test',
'start' => '12423511247',
'stop' => '12423991978',
'addrtype' => 'MB',
'clntID' => '+380957700418',
'lg' => '',
'bank' => '',
'lang' => '',
'prior' => '',
'brnm' => '',
'extref' => '',
'intref' => '',
'extaddrtype' => '',
'extaddrid' => '',
'recall' => '',
],
'attr' => [
[
'attributes' => [
'code' => '1',
'val' => '11',
],
],
[
'attributes' => [
'code' => '2',
'val' => '12',
],
],
],
'hist' => [
[
'attributes' => [
'st' => '',
'ch' => '',
'lg' => '',
'con' => '',
'com' => '',
'addrtype' => '',
'addrid' => '',
'dt' => '',
'contactId' => '',
],
],
],
],
],
];
class Conv
{
protected $res;
protected $context;
protected $lastKey = 'item';
public function __construct(array $context)
{
if (count($context) != 1) {
throw new Exception('Must be only one root element', 500);
}
$this->context = $context;
$this->init(key($this->context));
}
public function conv() {
return $this->a2x(current($this->context), $this->res)->asXML();
}
protected function init($root) {
$this->res = new SimpleXMLElement("<{$root}/>");
}
protected function addAttribs(array $attribs, SimpleXMLElement $node)
{
if (count($attribs)) {
foreach ($attribs as $attrKey => $attrVal) {
$node->addAttribute($attrKey, $attrVal);
}
}
return $node;
}
protected tryToAddAttribs(array &$inner, SimpleXMLElement $node)
{
if (isset($inner['attributes'])) {
$this->addAttribs($inner['attributes'], $node);
unset($inner['attributes']);
}
return $node;
}
protected function addEnum(array $items, SimpleXMLElement $node, $caption)
{
if (count($items)) {
foreach ($items as $item) {
$subNode = $node->addChild($caption);
$this->tryToAddAttribs(&$inner, $subNode);
}
}
}
protected function a2x(array $inner, SimpleXMLElement $node)
{
$this->tryToAddAttribs(&$inner, $node);
if (count($inner)) {
foreach ($inner as $key => $value) {
if ($this->isEnumeration($value)) {
foreach ($inner as $item) {
$this->addEnum($item, $node, $this->lastKey);
}
} else {
$this->lastKey = $key;
$subNode = $node->addChild($key);
$this->a2x($value, $subNode);
}
}
}
return $this->res;
}
protected function isEnumeration(array $items)
{
$keys = array_keys($items);
foreach ($keys as $key) {
if (!is_numeric($key)) {
return false;
}
}
return true;
}
}
$a2x = new Conv($context);
var_dump($a2x->conv()); //->asXML();
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 5.4.19 0.007 0.037 12.41 5.4.18 0.010 0.036 12.41 5.4.17 0.032 0.089 12.41 5.4.16 0.037 0.090 12.40 5.4.15 0.022 0.076 12.39 5.4.14 0.029 0.094 12.09 5.4.13 0.029 0.093 12.06 5.4.12 0.015 0.044 12.03 5.4.11 0.027 0.063 12.03 5.4.10 0.035 0.087 12.03 5.4.9 0.018 0.040 12.02 5.4.8 0.028 0.091 12.02 5.4.7 0.024 0.095 12.02 5.4.6 0.025 0.077 12.03 5.4.5 0.033 0.084 12.03 5.4.4 0.024 0.032 12.01 5.4.3 0.025 0.063 12.00 5.4.2 0.032 0.086 12.00 5.4.1 0.015 0.051 12.00 5.4.0 0.033 0.084 11.50 5.3.27 0.033 0.088 12.72 5.3.26 0.020 0.041 12.71 5.3.25 0.034 0.093 12.72 5.3.24 0.019 0.049 12.72 5.3.23 0.041 0.084 12.70 5.3.22 0.027 0.096 12.68 5.3.21 0.031 0.099 12.68 5.3.20 0.015 0.045 12.68 5.3.19 0.016 0.048 12.68 5.3.18 0.022 0.045 12.67 5.3.17 0.022 0.042 12.67 5.3.16 0.047 0.082 12.68 5.3.15 0.025 0.041 12.67 5.3.14 0.032 0.096 12.66 5.3.13 0.017 0.047 12.66 5.3.12 0.040 0.083 12.65 5.3.11 0.025 0.097 12.66 5.3.10 0.044 0.082 12.12 5.3.9 0.039 0.090 12.08 5.3.8 0.045 0.111 12.07 5.3.7 0.029 0.097 12.07 5.3.6 0.043 0.078 12.06 5.3.5 0.039 0.082 12.00 5.3.4 0.035 0.088 12.00 5.3.3 0.020 0.038 11.95 5.3.2 0.017 0.045 11.73 5.3.1 0.021 0.065 11.68 5.3.0 0.014 0.043 11.67
preferences:dark mode live preview
153.63 ms | 1398 KiB | 7 Q