使用数组值创建一个SimpleXML值字符串

安德鲁·霍夫

我想知道是否有人可以帮助我解决我遇到的问题。我到处搜索,但似乎找不到解决方案,所以我想在这里问:)

基本上,我有一个包含要使用的field_id的数组,该值是另一个数组,其中包含需要串在一起才能访问包含我要检索的值的SimpleXML节点的元素名称。

例如

    array (
        'route_id' => array('Services', 'Service', 'ServiceCode'),
        'agency_id' => array('Services', 'Service', 'RegisteredOperatorRef'),
        'route_short_name' => array('Services', 'Service', 'LineName'),
        'route_long_name' => '',
        'route_desc' => array('Services', 'Service', 'Description'),
        'route_type' => array('Services', 'Service', 'Mode'),
        'route_url' => '',
        'route_color' => '',
        'route_text_color' => '',
    );

如您所见,ID“ route_id”包含在

$xmlobject->Services->Service->ServiceCode

等等等等。

现在,当我处理该特定区域时,我尝试使用

implode('->', $fields)

这种方法基本上似乎不起作用,并返回空,但是我可以访问该值,因为我在物理上键入了完全相同的路径。

我想知道是否对此有任何解决方案,还是我必须找到一种替代的编写方式?

非常感谢

安德鲁

过路人

->是运算符,因此,如果您真的想将其构建为字符串并要求PHP对其进行解析,则需要尝试eval()

但是您不必这样做,因为您可以通过某种循环链接到目的地:

function findText($entry,array $api,SimpleXMLElement $xml)
{
    if(!empty($api[$entry]))
    {
        $cache=$xml;
        foreach($api[$entry] as $node)
        {
            $cache=$cache->{$node};
        }
        return (String)$cache;
    }
    else
    {
        return null;
    }
}

具有以下数据的在线演示

XML:

<?xml version="1.0"?>
<root>
    <Services>
        <Service>
            <ServiceCode>Route ID</ServiceCode>
            <RegisteredOperatorRef>Agency ID</RegisteredOperatorRef>
            <LineName>Route Short Name</LineName>
            <Description>Route Description</Description>
            <Mode>Route Type</Mode>
        </Service>
    </Services>
</root>
$xml=simplexml_load_string(/* XML */);
$api=array (
    'route_id' => array('Services', 'Service', 'ServiceCode'),
    'agency_id' => array('Services', 'Service', 'RegisteredOperatorRef'),
    'route_short_name' => array('Services', 'Service', 'LineName'),
    'route_desc' => array('Services', 'Service', 'Description'),
    'route_type' => array('Services', 'Service', 'Mode')
);
echo findText("route_id",$api,$xml);

Route IDPHP 5.1及更高版本的回声(尽管您可能希望在路径不正确或类似的情况下在循环中添加一些错误处理代码)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

拆分一个字符串值,然后使用 pandas 创建一个新值

使用jQuery,我需要根据输入值创建一个定界字符串

创建一个类名+字符串值到类型值的解析器

将字符串数组索引值替换为另一个值

根据另一个数组选择字符串数组值

仅使用reduce计算数组中出现的字符串不会读取最后一个值

使用java 8 Stream按第一个值对字符串数组进行分组

如何使用Ramda将数组中的空字符串替换为另一个值?

使用angularjs中的另一个(键,值)对象过滤字符串数组中的匹配项

使用字符串值给布尔值一个 ID

如何创建一个静态的字符串数组?

从char数组创建一个新的字符串

hive 从字符串创建一个数组

创建一个基于字符串的Class数组

在包含值的字符串数组中查找字符串的最后一个索引

将数组的字符串值更改为另一个字符串值

使用 mongodb c# 从字符串数组中提取一个值,如果它包含子字符串

将在一个函数中创建的字符串值作为参数传递给函数

尝试创建一个基于字典中“整数”值返回“字符串”键的函数

根据查询字符串值创建一个 FlaskForm 下拉列表

CheckBox 根据所选对象的值创建一个字符串

获取一个JSON JSON数组的字符串值

检查数组中是否包含至少一个字符串值

从数组获取字符串或在一个内衬中设置默认值

将字符串拆分为数组并追加上一个值

从字符串数组获取第一个双值

数组中的值是一个字符串而不是整数

带有一个空字符串值的jQuery数组

在 PostgreSql 中查找包含字符串的第一个数组值