Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在zend framework 2中返回对象数组?_Php_Arrays_Object_Zend Framework2_Zend Db - Fatal编程技术网

Php 如何在zend framework 2中返回对象数组?

Php 如何在zend framework 2中返回对象数组?,php,arrays,object,zend-framework2,zend-db,Php,Arrays,Object,Zend Framework2,Zend Db,我在zf2中执行查询,我得到一个对象(Zend\Db\ResultSet\HydratingResultSet),我必须打开该对象才能访问属性 我希望在默认情况下获得一个对象数组 以下是我的一些代码: 工厂 'address-mapper' => function ($serviceManager) { $mapper = new Mapper\Address(); $mapper->setDbAdapter($serviceManager->get('Zen

我在zf2中执行查询,我得到一个
对象(Zend\Db\ResultSet\HydratingResultSet)
,我必须打开该对象才能访问属性

我希望在默认情况下获得一个对象数组

以下是我的一些代码:

工厂

'address-mapper'  => function ($serviceManager) {
    $mapper = new Mapper\Address();
    $mapper->setDbAdapter($serviceManager->get('Zend\Db\Adapter\Adapter'));
    $mapper->setEntityPrototype(new Entity\Address);
    $mapper->setHydrator(new \Zend\Stdlib\Hydrator\ClassMethods);

    return $mapper;
}
询问

public function fetchById()
{
    $select = $this->getSelect()->where(array('id' => $Id));
    return $this->select($select);
}
这让我回想起:

object(Zend\Db\ResultSet\HydratingResultSet)[459]
      protected 'hydrator' => 
        object(Zend\Stdlib\Hydrator\ClassMethods)[415]
          protected 'underscoreSeparatedKeys' => boolean true
          private 'callableMethodFilter' => 
          ....
          ....

你知道我需要做什么吗?

Zend\Db\ResultSet\HydratingResultSet有一个
toArray
方法。因此,您可以这样做以获得结果的多维数组,而不是结果集:

public function fetchById()
{
    $select = $this->getSelect()->where(array('id' => $Id));
    $arrayResults = $this->select($select)->toArray()
    return $arrayResults;
}

正如Steve所指出的,可以像数组一样迭代结果集。但如果您需要将其作为实际数组,ZF2将提供一个iteratorToArray函数,该函数将为您将其转换为数组

public function fetchById($Id) {
    $select = $this->getSelect()->where(array('id' => $Id));
    $results = $this->select($select);

    return \Zend\Stdlib\ArrayUtils::iteratorToArray($results);
}

我希望得到一个对象数组,而不是数组数组,因为
HydratingResultSet
实现了
Iterator
接口,因此您可以使用
foreach
来循环结果,就好像它是一个数组一样。如果你真的需要一个对象数组,你必须使用这样的
foreach
手动构建数组。这就是我在这里寻找的:如果你在那里发布你的答案,我会接受它!谢谢!似乎第二个参数$recursive应该为false。与