PHP-搜索对象数组

PHP-搜索对象数组,php,oop,Php,Oop,我有一个来自类卷的对象数组。我正在寻找返回给定_id值的_description属性的最佳方法(访问器方法是get_description) 在下面的示例中,我将提供“vol-e123456a3”,它将返回“servere:volume” 试试这个 $_id="vol-e123456a3"; foreach($objArray as $obj) { if($obj->_id==$_id) { return isset($obj->_description

我有一个来自类卷的对象数组。我正在寻找返回给定_id值的_description属性的最佳方法(访问器方法是get_description)

在下面的示例中,我将提供“vol-e123456a3”,它将返回“servere:volume”

试试这个

$_id="vol-e123456a3";
foreach($objArray as $obj)
{
    if($obj->_id==$_id)
    {
       return isset($obj->_description) ? $obj->_description : "";
    }
}

您可以使用以下功能;数据成员被标记为受保护,因此为了从公共端访问它们,您必须使用accesor方法,而您尚未指定这些方法。我猜了一个最常见的名字

function getValue($object_array, $filter) {
    foreach ($object_array as $object) 
       if ($object->getId() == $filter) return $object->getDescription();
    return false;
}
使用以下参数调用它

$description = getValue($objects, 'vol-e123456a3');
如果没有公共访问器方法,我们将需要使用反射。如下

function getValue($object_array, $filter) {
    foreach ($object_array as $object)  {
        $class = new ReflectionClass($object);
        $prop = $class->getProperty('_id')->getValue($object);
       if ($prop == $filter) return $class->getProperty('_description')->getValue($object)
    }
    return false;
}

你所说的
最好的方法是什么意思,你在尝试什么吗?看看这篇帖子:我没有寻找任何
getId()
getDescription()
。你已经指定了,但是你应该指定方法的
名称too@RohanKumar我已经更新了我的答案,使之更加完整
function getValue($object_array, $filter) {
    foreach ($object_array as $object)  {
        $class = new ReflectionClass($object);
        $prop = $class->getProperty('_id')->getValue($object);
       if ($prop == $filter) return $class->getProperty('_description')->getValue($object)
    }
    return false;
}