我希望有人可以就如何做到这一点提出建议。
我有一个类似于这样的数据库结果集:
PARENT CHILD
Cat Tiger
Cat Lion
Cat Panther
Mammal Cat
Mammal Dog
Creature Mammal
我需要的是一个函数,当传递此结果集时,将返回如下所示的内容:
PARENT CHILD
Cat Tiger
Cat Lion
Cat Panther
Mammal Tiger
Mammal Lion
Mammal Panther
Creature Tiger
Creature Lion
Creature Panther
描述这种功能的过程:
如果PARENT字段中不存在CHILD字段中的值,我们只需将该行添加到$ newArray。
如果CHILD字段中的值存在于PARENT字段中,我们要检查PARENT字段中出现此值的任何实例并应用相同的考虑因素,仅添加到$ newArray在PARENT字段中没有出现CHILD,并将最终的CHILD与原始 PARENT相关联。
我认识到这涉及在父字段上迭代时的递归。我试过这个但最终被卡住了......
感谢您的帮助!
(请注意,如果使用SQL存储过程更好地服务于此,我愿意接受建议。我正在使用mySQL,并且理解不支持递归,因此我在php中尝试了这一点。)
答案 0 :(得分:1)
尝试将伪代码转换为php:
$map = array( "Cat" => array("Tiger","Lion",....
getChildren($map,'Mammal') ===> (Tiger,Lion,Panther,Dog)
function getChildren($map,$parent)
{
if (!isset($map[$parent]))//if a value in the CHILD field does not exist in the PARENT field
return array($parent);
$return = array();
$children=$map[$parent];
foreach($children as $child)//we want to examine any instances where this value occurs in the PARENT field
{
$return = merge($return, getChildren($child));//and apply the same consideration
}
return $return;
}
不确定我没有犯任何错误。但是这也会给出:
Creature Dog
Mammal Dog
或者为什么要排除这些?