我正在尝试从AWS响应中获取根类别名称。 ECS PHP类将其作为类返回。如果这是XML,我可以进行xpath搜索。我不知道搜索对象的等价物。
以下是从BrowseNode元素开始的对象结构:
object(stdClass)#172 (1) {
["BrowseNode"]=>
object(stdClass)#173 (3) {
["BrowseNodeId"]=>
string(8) "11059391"
["Name"]=>
string(22) "Makeup Brushes & Tools"
["Ancestors"]=>
object(stdClass)#174 (1) {
["BrowseNode"]=>
object(stdClass)#175 (3) {
["BrowseNodeId"]=>
string(8) "11062741"
["Name"]=>
string(19) "Tools & Accessories"
["Ancestors"]=>
object(stdClass)#176 (1) {
["BrowseNode"]=>
object(stdClass)#177 (4) {
["BrowseNodeId"]=>
string(8) "11055981"
["Name"]=>
string(8) "Products"
["IsCategoryRoot"]=>
bool(true)
["Ancestors"]=>
object(stdClass)#178 (1) {
["BrowseNode"]=>
object(stdClass)#179 (2) {
["BrowseNodeId"]=>
string(7) "3760911"
["Name"]=>
string(6) "Beauty"
}
}
}
}
}
}
}
}
基本上,如果“IsCategoryRoot”为TRUE,我需要在下一个“Ancestors”元素下的“Name”中获取值。在这种情况下,“美丽”将是价值。
我该怎么做?
答案 0 :(得分:0)
您可以轻松编写一个函数来递归到对象中并查找节点:
function find_category_root_name (stdClass $node) {
if(isset($node->IsCategoryRoot) && $node->IsCategoryRoot === true) {
if(isset($node->Ancestors->BrowseNode->Name) && !empty($node->Ancestors->BrowseNode->Name)) {
return $node->Ancestors->BrowseNode->Name;
} else {
// error IsCategoryRoot found but no name found for ancestor
return false;
}
} else if (isset($node->Ancestors->BrowseNode) && $node->Ancestors->BrowseNode instanceof stdClass) {
return find_category_root_name($node->Ancestors->BrowseNode);
} else {
// error no ancestor node found
return false;
}
}
find_category_root_name($outer_object->BrowseNode);