2015-08-24 2 views
0

В настоящее время я работаю над проектом Zend 2, и у меня есть некоторые проблемы с foreach внутри другого foreach. Вот мой код:foreach в пределах 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

EDIT:

В $ тесте массива есть 3 значения и в массиве $ месте есть 2 значения. Таким образом, результат после запуска:

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

И вот здесь, где заканчивается. Так что, конечно, он подходит для курсора второго foreach или что-то вроде этого?

Если я два Еогеасп отдельно и не imbrique его рабочих ...

+0

Жизнь $ param ограничена только внутренним foreach, вы не можете отключить это вне цикла – jitendrapurohit

+0

Проблема не в этом, я удалил это и получил ту же ошибку – PokeRwOw

+0

Вы должны проверить этот http: // stackoverflow.com/questions/18567219/this-result-is-a-forward-only-result-set-calling-rewind-after-moving-forward/18572629#18572629 об исключении, которое вы получаете – jitendrapurohit

ответ

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); 
    } 
+0

Я не уверен, что есть привязка к моей проблеме, проверьте отредактированный вопрос – PokeRwOw

+0

Проверьте код сейчас. Также я имел в виду, что мне нужно увидеть содержимое var_dump(); чтобы определить, что именно неправильно, так как у меня также была эта проблема много раз, но случаи могли быть разными. – Stanimir

0

$ place - это только набор результатов только вперед. Первый цикл доводит его до конца. Поэтому вы не можете использовать его в цикле for снова, поскольку он уже завершен.