假设有一些对象,派生自这些类实例
class A
{
...
private b //list of object of class B
}
class B
{
...
private c //list of object of class C
}
class C
{
...
private id
}
现在,在我的代码的某个地方,我遇到了这种情况
function findId(array $idList)
{
[...]
}
$idList
如果一个元素包含在这个对象“级联”中,我必须在哪里找到(对于每个元素)
第一个解决方案
//object initialization
foreach($a->getB() as $b)
{
foreach($b->getC() as $c)
{
foreach($idList as $id)
{
if($id == $c->getId())
{
//do something an break the cycle
}
}
}
}
第二种解决方案
//object initialization
$idSet = array();
foreach($a->getB() as $b)
{
foreach($b->getC() as $c)
{
$idSet[] = $c->getId();
}
}
$idSet = array_unique($idSet);
foreach($idList as $id)
{
if(array_search($id,$idSet) !== false)
{
[...]
}
}
哪个更好?有一些替代方法可以达到我的目标吗?
重要的
没有更好的数据表示。这是因为这些对象是一些数据库对象(doctrine2)