【问题标题】:PHP / Extract navigation from ArrayPHP / 从数组中提取导航
【发布时间】:2018-07-30 17:01:22
【问题描述】:

我有一个 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
}

有人有办法从我的数组映射中获取我想要的值吗?

【问题讨论】:

  • 问题是,它正在寻找一个名为“Document->Hello->Name”的属性,该属性不存在。它不跟随结构中的箭头,它只是使用那个确切的字符串。这里的答案应该可以帮助您进行一些修改:stackoverflow.com/questions/41594358/…
  • 感谢您的回答,但我不太明白。可以查看我的帖子,我发布我的代码。泰!

标签: php arrays mapping simplexml


【解决方案1】:

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

但是如果你真的需要将路径保存为数组中的键,你可以将第一个子数组中的所有标签分开,并将需要的值设置为数组的第二个元素;像这样:

$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']};
}

【讨论】:

    猜你喜欢
    • 2022-09-23
    • 2014-06-24
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多