foreach中的foreach不能更改别名

时间:2015-08-24 08:13:53

标签: php zend-framework2

我目前正在开展一个Zend 2项目,而且我在另一个foreach中遇到了一些问题。这是我的代码:

foreach($test as $one){
    echo $one->name;

    foreach($place as $param){
        echo $param['name_place'];
    }
    unset($param);
}

我收到以下错误:

Fatal error: Uncaught exception 'Zend\Db\Adapter\Exception\RuntimeException' with message 
'This result is a forward only result set, calling rewind() after moving forward is not supported' in 
/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Result.php:154 
Stack trace: #0 /module/Check/view/check/check/choix-niveau.phtml(25): 
Zend\Db\Adapter\Driver\Pdo\Result->rewind() #1 /vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php(506): 
include('/var/www/vhosts...') #2 /vendor/zendframework/zendframework/library/Zend/View/View.php(205):
Zend\View\Renderer\PhpRenderer->render(Object(Zend\View\Model\ViewModel)) 
#3 /vendor/zendframework/zendframework/library/Zend/Mvc/View/Http/DefaultRenderingStrategy.php(103):
Zend\View\View->render(Object(Zend\View\Model\ViewModel)) #4 [internal function]:
Zend\Mvc\View\Http\DefaultRenderingStrategy->render( in /vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Result.php on line 154

来自2个foreachs的模型:

public function getAllPlace()
{
    $select = new Select();
    $select->from('place')
            ->join('level', 'level.id = place.id_level', array('nom'))
            ->order('level.id');

    $statement = $this->tableGateway->getSql()->prepareStatementForSqlObject($select);
    $resultSet = $statement->execute();
    $resultSet->buffer();
    return $resultSet;
}

第二个模型

public function getAllTry()
{
    $select = new Select();
    $select->from('try')
    ->order('id');

    $resultSet = $this->tableGateway->selectwith($select);
    $resultSet->buffer();
    return $resultSet;
}

问题来自$place as $param,因为如果代码为$place as $place则没有错误。但我需要更改名称变量以取消设置。

先谢谢!

PokeRwOw

编辑:

在数组$ test中有3个值,在数组$ place中有2个值。所以发布后的结果:

- First value of $test
  - First value of $place
  - Second value of $place
-Second value of $test

这就是它完成的地方。所以肯定会出现第二个foreach的光标或类似的东西?

如果我分开制作两个foreach而不是imbrique它的工作......

2 个答案:

答案 0 :(得分:0)

由于我们没有完整的代码,也不知道$test$place的数据类型,我认为您在某处丢失了->current()或 - > toArray()`。

请向我们展示$test$place的内容。

    foreach($test as $key => $one){
        echo $one->name;
            foreach($place[$key] as $param){
                echo $param['name_place'];
            }
            unset($param);
    }

答案 1 :(得分:0)

$ place是一个前向结果集。第一个循环将其结束。所以你不能再次在for循环中使用它,因为它已经在最后了。