如何从名称而不是索引获取数组值?

时间:2015-02-26 00:18:24

标签: php xml simplexml

我有以下xml:

<result>
<rowset name="jumpClones" key="jumpCloneID" columns="jumpCloneID,typeID,locationID,cloneName"/>
<rowset name="jumpCloneImplants" key="jumpCloneID" columns="jumpCloneID,typeID,typeName"/>
<rowset name="implants" key="typeID" columns="typeID,typeName">
<row typeID="9899" typeName="Ocular Filter - Basic"/>
<row typeID="9941" typeName="Memory Augmentation - Basic"/>
<row typeID="9942" typeName="Neural Boost - Basic"/>
<row typeID="9943" typeName="Cybernetic Subprocessor - Basic"/>
<row typeID="9956" typeName="Social Adaptation Chip - Basic"/>
</rowset>
</result>

要获得值Ocular Filter - Basic,我正在使用/通过rowset的索引:

$array->result->rowset[2]->row[0]["typeName"];
                   //  ^

现在,rowset [2]有:name =“implants”

那么,如何使用数组索引属性名称(implants)获取值而不是指向索引2

我试过了:

$array->result->rowset["implants"]->row[0]["typeName"];

但它没有用。什么是正确的解决方案?

1 个答案:

答案 0 :(得分:1)

如果你想使用implants作为获取该节点而不是选择索引的基础(因为这可能会有所不同),你可以使用xpath查询,如果找到则指向它,然后访问它的子节点。例如:

$implants = $array->xpath('//rowset[@name="implants"]');
if(!empty($implants)) {
    echo $implants[0]->row[0]->attributes()->typeName;
}

Sample Output