This is an array of objects, as an example I made the following entry from your collection:
<?php
$myCollection = [
new stdClass(),
new stdClass(),
new stdClass(),
];
//como no seu exemplo, você tem 3 posições do array que cada uma representa 2 atributos de um objeto stdClass
$myCollection[0]->seccionalid = 1;
$myCollection[0]->seccionaldescricao = 'DELSECPOL DE SJRIO PRETO';
$myCollection[1]->seccionalid = 2;
$myCollection[1]->seccionaldescricao = 'DELSECPOL DE JALES';
$myCollection[2]->seccionalid = 3;
$myCollection[2]->seccionaldescricao = 'DELSECPOL DE ARAÇATUBA';
echo "<pre>";
print_r($myCollection);
class PHPIterator implements Iterator
{
private $collection = [];
private $key = 0;
public function __construct(array $collection = [])
{
$this->collection = $collection;
}
public function rewind()
{
$this->key = 0;
}
public function current()
{
return $this->collection[$this->key];
}
public function key()
{
return $this->key;
}
public function next()
{
++$this->key;
}
public function valid()
{
return isset($this->collection[$this->key]);
}
}
//aqui você faz a interação:
$phpIterator = new PHPIterator($myCollection);
//abaixo eu faço com três casos de interação
echo "-----------------while--------------------\n";
$phpIterator->rewind();
while ($phpIterator->valid()) {
echo $phpIterator->current()->seccionalid."\n";
echo $phpIterator->current()->seccionaldescricao."\n";
$phpIterator->next();
}
echo "-------------------for--------------------\n";
for ($phpIterator->rewind(); $phpIterator->valid(); $phpIterator->next()) {
echo $phpIterator->current()->seccionalid."\n";
echo $phpIterator->current()->seccionaldescricao."\n";
}
echo "------------------foreach-----------------\n";
foreach ($phpIterator as $key => $object) {
echo $object->seccionalid."\n";
echo $object->seccionaldescricao."\n";
}
The PHP documentation has more information about this design pattern:
link
Now using a more basic form, no design pattern, you can do it this way:
//Suponha que sua coleção seja essa:
$myCollection = [
new stdClass(),
new stdClass(),
new stdClass(),
];
//como no seu exemplo, você tem 3 posições do array que cada uma representa 2 atributos de um objeto stdClass
$myCollection[0]->seccionalid = 1;
$myCollection[0]->seccionaldescricao = 'DELSECPOL DE SJRIO PRETO';
$myCollection[1]->seccionalid = 2;
$myCollection[1]->seccionaldescricao = 'DELSECPOL DE JALES';
$myCollection[2]->seccionalid = 3;
$myCollection[2]->seccionaldescricao = 'DELSECPOL DE ARAÇATUBA';
//lembrando que a variável $myCollection é uma simples representação do retorno de: $dados = $seccionais->fetchAll(PDO::FETCH_OBJ);
if (count($myCollection)) {
foreach($myCollection as $data) {
echo $data->seccionalid.'<br>';
echo $data->seccionaldescricao.'<br>';
}
}
Here's the example that works:
link