Estoy en la tesitura de los arreglos de objetos en Php y me vuelve un poco loco, os explico detalladamente y con codigo.
En un layaut obtengo un arreglo de objetos, desde la clase stdClass(), que es la que se utiliza ahora bien solo puedo manejar dichos objetos con el foreach, en cuanto intento utilizar un while(){}, se me enbucla y no termina nunca.
Recibo el arreglo de objetos en "$this->poblaciones", si relizo un var_dump, me devuelve esto pero mucho mas largo:
Cita:
Nota este el primer elemento del arreglo de objetos de 252 en total.{ [0]=> object(stdClass)#292 (4) { ["id_poblacion"]=> string(1) "1" ["id_ciudad"]=> string(1) "1" ["ciudad"]=> string(6) "MADRID" ["poblacion"]=> string(8) "ACEDINOS" }
Esto lo imprimo en pantalla con el siguiente codigo html, pero me sale una lista de 252 poblaciones claro
Código HTML:
<table></tr> <?php foreach($this->poblaciones as $poblacion):?> <tr> <td><?php //echo $poblacion->id_poblacion;?></td> <td><a href=<?php //Aqui ponemos enlace a la siguiente vista echo 'index.php?mostrarPoblacion&id_poblacion='.$poblacion->id_poblacion);?>><?php echo $poblacion->poblacion;?></a></td> </tr> <?php endforeach; ?> </table>
Código PHP:
<?php
echo "<table width='100%' width='200' border='0' bordercolor='#CCCCCC' cellpadding='0' cellspacing='0'>";
$numcolumnas = 2;
// Aqui cuento el total de elementos del arreglo de objetos
$total_resultados = count ($this->poblaciones);
// Sacamos el numero total de filas de la consulta
if ($total_resultados>0) {
$i = 1;
while($fila = $this->poblaciones){
$resto = ($i % $numcolumnas);
if($resto == 1){ /*si es el primer elemento creamos una nueva fila*/
echo "<tr>";
}
echo "<td align='left'><a href='".$fila4['poblacion'].".php' title='".$fila3['poblacion']."'> <strong>".$fila3['poblacion']."</strong></a></td>";/*mostramos el valor del campo especificado*/
if($resto == 0){/*cerramos la fila*/
echo "</tr>";
}
$i++;
}
if($resto != 0){/*Si en la última fila sobran columnas, creamos celdas vacías*/
for ($j = 0; $j < ($numcolumnas - $resto); $j++){
echo "<td></td>";
}
echo "</tr>";
}
}else{
echo "<tr><td>0 elementos encontrados</td></tr> ";
}
echo"</table>";
?>
Saludos y gracias por vuestro tiempo.