¿Verdad que son curiosas las interfaces en PHP 5?
Miren si no esta clase:
Código PHP:
<?php
class DbRows implements Countable, Iterator
{
private $results;
private $index = -1;
private $row = false;
/**
* Constructor. Se inicializa con los resultados de una llamada a
* mysql_query.
*/
public function __construct($results)
{
$this->results = $results;
}
/**
* Devuelve el número de registros
*/
public function count()
{
return mysql_num_rows($this->results);
}
/**
* Reinicia la iteración
*/
public function rewind()
{
@mysql_data_seek($this->results, 0);
$this->index = -1;
$this->next();
}
/**
* Avanza de registro
*/
public function next()
{
$this->row = mysql_fetch_row($this->results);
if ($this->row)
{
$this->index++;
}
}
/**
* Devuelve el registro actual
*/
public function current()
{
return $this->row;
}
/**
* Devuelve el índice actual
*/
public function key()
{
return $this->index;
}
/**
* Devuelve si la posición actual es válida
*/
public function valid()
{
return $this->row != false;
}
}
?>
Y, ¿cuál es su uso?
Si creamos un objeto de esta clase con el resultado de una consulta:
Código PHP:
$dbRows = new DbRows(mysql_query('select ....'));
podemos recorrer todos los registros con una sentencia tan limpia como:
Código PHP:
echo 'Número de registros: ' . count($dbRows);
foreach ($dbRows as $row)
{
var_dump($row);
}
// Saludos