我目前正在开展一个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它的工作......
答案 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循环中使用它,因为它已经在最后了。