Cómo iterar a través de una matriz de matrices

Estoy esperando que alguien puede ayudar.

Estoy seguro de que es sólo un simple que no puedo trabajar por alguna razón.

Básicamente tengo una clase que se encarga de todas mis funciones de base de datos (conectar, seleccionar, insertar, actualizar).

En la función seleccionar estoy devolviendo un array.

public function getAll($table, $cols, $where, $limit, $order) {
    //Set the query variables
    if($cols == '') {
        $cols = '*';
    }
    if($where!='') {
        $where = ' WHERE '.$where;
    }
    if($limit!= '') {
        $limit = ' LIMIT '.$limit;
    }
    if($order!='') {
        $order = ' ORDER BY '.$order;
    }

    //Make the query string 
    $sql = 'SELECT '.$cols.' FROM '.$table.$where.$order.$limit;

    //echo $sql;

    //Set the query
    $news_qry = mysql_query($sql);

    //Set the array 
    $rows = array();

    //Run a loop through the results
    while($item = mysql_fetch_object($news_qry)) 
    {
        //Add each row to an array.
        $rows[] = $item;
    }
    return $rows;       
}   

Esta función trabaja como puedo imprimir una matriz. Ver más abajo:

Array ( [Gallery_id] => 1 [Gallery_Name] => Test [Gallery_FolderName] => Test Folder )

Pero cuando voy a utilizar el objeto –

$arr_GalleryInfo = $dataObj->getAll('tbl_Gallery', '', '', '', '');

Dentro del bucle for each (ver más abajo) me recibe sólo la primera letra de el resultado de la base de datos.

 <?php
        foreach ($arr_GalleryInfo[0] as $arrGallery) 
        {
    ?>
            <tr>
                <td>
                     <?php echo $arrGallery['Gallery_Name']; ?>          
                </td>

                <td>
                    <?php echo $arrGallery; ?>   
                </td>

                <td>
                    <?php echo $arrGallery; ?>    
                </td>
            </tr>
    <?php
        }
    ?>

Cualquier ayuda sería genial.

Gracias.

2 Kommentare

  1. 10

    Reemplazar:

    foreach ($arr_GalleryInfo[0] as $arrGallery) 
    {
      etc...

    con:

    foreach ($arr_GalleryInfo as $arrGallery)         
    {
      etc...
  2. 2

    Bien, su gran problema es que usted está tratando de recorrer el 0-índice de una matriz.

    foreach ($arr_GalleryInfo[0] as $arrGallery) //get rid of the `[0]`.

    Que hará que usted realmente conseguir algunos de fiar iteraction, pero hay algunas otras cosas que son trampas que usted está a punto de llegar.

     //this will output `Array`. You want $artGallery['Gallery_FolderName']
     //or $artGallery['Gallery_id']
     echo $arrGallery; 

    Por supuesto, usted podría evitar que todo el segundo problema con un bucle anidado:

    foreach ($arr_GalleryInfo as $arrGallery) {
       echo '<tr>';
       foreach($arrGallery as $val ) echo "<td>$val</td>";
       echo '</tr>';
    }

    Si $news_qry = mysql_query($sql); falla, usted no tiene nada para advertirle de que si algo se rompe. Usted debe hacer es: $news_qry = mysql_query($sql) or die(mysql_error());

    Y, por supuesto, usted debe utilizar mysql_real_escape_string en todos los de tu db entradas.

    • Gracias por tu ayuda. No puede creer que no se trate de eso.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea