Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di gnola
    Registrato dal
    Jun 2001
    Messaggi
    603

    Problema di indici di un Array forse stupido...

    Ciao a tutti, non sono molto pratica con gli array e non so come risolvere questo problemino...

    In pratica io creo un array multidimensionale con foto e didascalia prendendo i dati da alcuni campi in un db.
    Il primo problema però è che alcuni campo potrebbero essere vuoti quindi un array potrebbe contenere degli indici vuoti.....come faccio a "ripulire l'array togliendo gli indici vuoti ma rinominando quindi l'array ripulito con gli indici consequenziali senza "vuoti"?

    vi metto il codice:

    codice:
    // QUI PRENDO I DATI DAL DB
    
    $query = "SELECT * from $tab where id=1";
    $Recordset = mysql_query($query, $connessione) or die(mysql_error());
    $row = mysql_fetch_assoc($Recordset);
    
    
    $foto1lato = $row['foto1lato'];
    $foto2lato = $row['foto2lato'];
    $foto1=$row['foto1'];
    $foto2=$row['foto2'];
    $foto3=$row['foto3'];
    
    
    $descrizionefoto1 = $row['descrizionefoto1'];
    $descrizionefoto2 = $row['descrizionefoto2'];
    $descrizionefoto1small = $row['descrizionefoto1small'];
    $descrizionefoto2small = $row['descrizionefoto2small'];
    $descrizionefoto3small = $row['descrizionefoto3small'];
    
    
    //QUI CREO L'ARRAY
    $foto = array( 
            array('nomefoto' => $foto1lato, 'didascalia' => $descrizionefoto1), 
            array('nomefoto' => $foto2lato, 'didascalia' => $descrizionefoto2), 
            array('nomefoto' => $foto1, 'didascalia' => $descrizionefoto1small), 
            array('nomefoto' => $foto2, 'didascalia' => $descrizionefoto2small), 
            array('nomefoto' => $foto3, 'didascalia' => $descrizionefoto3small)
    );
    
    
    //QUI RIPULISCO DAGLI ELEMENTI VUOTI L'ARRAY
    $conta = count($foto);
    
    
    for($i=0;$i<$conta;$i++){ 
    if($foto[$i]['nomefoto'] == '')
    unset($foto[$i]);
    }

    il problema è che così facendo gli indici rimagono gli stessi quindi può capitare di avere un array così:


    elemento: 0 = nomefoto1.gif
    elemento: 2 = nomefoto2.gif
    elemento: 3 = nomefoto3.gif
    elemento: 4 = nomefoto4.gif


    Io vorrei invece che il nuovo array fosse così:

    elemento: 0 = nomefoto1.gif
    elemento: 1 = nomefoto2.gif
    elemento: 2 = nomefoto3.gif
    elemento: 3 = nomefoto4.gif

    come posso fare?

  2. #2
    Basterebbe aggiungere gli elemente all'array solo se if($foto[$i]['nomefoto'] != '')
    Che senso ha creare l'array con tutti gli elementi e poi ripulirlo fai il controllo prima ed aggiungi gli elementi all'array solo se questi non sono nulli.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di gnola
    Registrato dal
    Jun 2001
    Messaggi
    603
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Basterebbe aggiungere gli elemente all'array solo se if($foto[$i]['nomefoto'] != '')
    Che senso ha creare l'array con tutti gli elementi e poi ripulirlo fai il controllo prima ed aggiungi gli elementi all'array solo se questi non sono nulli.


    Ci ho pensato ma non sono riuscita a farlo....cioè non posso fare un ciclo for per popolare l'array visto che i nomi dei campi non sono del tipo campo1, campo2, campo3 ecc....come faccio?? Purtroppo non posso nemmeno rinominare i campi...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    allla fine usi
    Codice PHP:
    $foto array_values($foto
    No

  5. #5
    Brutto ma veloce:

    Codice PHP:
    ...
    //QUI CREO L'ARRAY
    if ($foto1lato != ''$foto[] = array('nomefoto' => $foto1lato'didascalia' => $descrizionefoto1);
    if (
    $foto2lato != ''$foto[] = array('nomefoto' => $foto2lato'didascalia' => $descrizionefoto2);
    if (
    $foto1 != ''$foto[] = array('nomefoto' => $foto1'didascalia' => $descrizionefoto1small);
    if (
    $foto2 != ''$foto[] = array('nomefoto' => $foto2'didascalia' => $descrizionefoto2small);
    if (
    $foto3 != ''$foto[] = array('nomefoto' => $foto3'didascalia' => $descrizionefoto3small);
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it L'avatar di gnola
    Registrato dal
    Jun 2001
    Messaggi
    603
    Grazieee!! Così ho risolto i problemi

    ciao!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.