PHP /从数组中提取导航

时间:2018-07-30 17:01:22

标签: php arrays mapping simplexml

我有一个XML文档,我正在使用SimpleXMLElement来像PHP一样解析它:

<Document>
     <Hello>
         <Name>Jason</Name>
    </Hello>
</Document>

访问加载我的XML的名称的示例,然后我这样做:

$xml->Document->Hello->Name

我想将所有这些路线存储在类似的关联数组中

$array = [
   "Document->Hello->Name" => "name"
];

问题是当我在该数组上循环时,我的字段为空 我这样做:

foreach($array as $key => $v)
{
  $hereIsempty = $xml->$key
}

有人可以从我的数组映射plz中获得我想要的值吗?

1 个答案:

答案 0 :(得分:0)

在一个密钥中存储完整的路由路径是一个坏主意。 如果您事先知道路径的含义:请将标签名称设置为const value,然后使用它。

但是,如果您确实需要将路径另存为数组中的键,则可以将第一个子数组中的所有标签分开,并将需求值设置为数组的第二个元素;像这样的东西:

$needs = [];

$routes = [
    [
        'tags' => ['Document', 'Hello'], 
        'need' => 'Name'
    ]
];

foreach ($routes as $route) {
    tempXml = $xml;

    foreach ($route['tags'] as $tag) {
        $tempXml = $tempXml->{$tag};
    }

    $need[] = (string)$tempXml->{$route['need']};
}