Ver Mensaje Individual
  #1  
Antiguo 28-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Iteradores y contables

¿Verdad que son curiosas las interfaces en PHP 5?

Miren si no esta clase:

Código PHP:
<?php
class DbRows implements CountableIterator
{
    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->results0);
        
$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
Responder Con Cita