Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Eliminare elementi ed ordinare array

    Salve, ho 6 array, ognuno composto da 30 elementi:

    $nome
    $cognome
    $indirizzo
    $citta
    $telefono
    $email

    Questi array si possono pensare come una tabella, in cui $nome, $cognome, $indirizzo, ecc.. sono le colonne e le chiavi (ad esempio $nome['6'], $cognome['6'], $indirizzo['6'], ecc... appartengono alla stessa riga).

    Purtroppo dei 30 valori che contiene ogni array alcuni possono essere vuoti, e nel caso in cui i valori da $cognome['23'] a $cognome['29'] sono vuoti io devo eliminarli (eliminando le chiavi da 23 a 29 anche negli altri 5 array) ed in seguito devo eliminare i buchi vuoti riordinandoli.
    Ho provato in questo modo ma non funziona:

    Codice PHP:
        $controllo=0;
        while (
    $controllo<30){
            if (
    $cognome[$controllo]==""){
                unset(
    $cognome[$controllo]);
                unset(
    $nome[$controllo]);
                unset(
    $indirizzo[$controllo]);
                unset(
    $citta[$controllo]);
                unset(
    $telefono[$controllo]);
                unset(
    $email[$controllo]);
            }
            
    $controllo++;
        }
        
    //Ordino i valori dell'array
        
    $cognome=sort($cognome);
        
    $nome=sort($nome);
        
    $indirizzo=sort($classe);
        
    $citta=sort($sezione);
        
    $telefono=sort($ruolo);
        
    $email=sort($sesso); 
    P.S. Questi valori mi sono stati passati tramite POST e li ho recuperati in questo modo:
    Codice PHP:
        for ($i=0$i<30$i++){
            
    $cognome[]=trim(htmlspecialchars($_POST['cognome'][$i]));
            
    $nome[]=trim(htmlspecialchars($_POST['nome'][$i]));
            
    $indirizzo[]=trim(htmlspecialchars($_POST['indirizzo'][$i]));
            
    $citta[]=trim(htmlspecialchars($_POST['citta'][$i]));
            
    $telefono[]=trim(htmlspecialchars($_POST['telefono'][$i]));
            
    $email[]=trim(htmlspecialchars($_POST['email'][$i]));
        } 
    Vi ringrazio in anticipo

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Ho provato a fare questo al volo.
    Controllo un array principale, partendo dal presupposto che le chiavi corrispondono in tutti e che devo eliminare tutte quelle vuote in quello principale e negli altri:

    Codice PHP:
    $cognomi = array(1=>'primo'2=>''3=>'terzo');
    $nomi = array(1=>'primo'2=>''3=>'terzo');

    print 
    '<pre>';print_r($cognomi);print '</pre>';   
    print 
    '<pre>';print_r($nomi);print '</pre>';   


    foreach(
    $cognomi as $key=>$v){
        if(
    $v == ''){
            
    $vuoto[]=$key;
        }
    }

    foreach(
    $vuoto as $k){
        unset(
    $cognomi[$k]);
        unset(
    $nomi[$k]);
    }

    print 
    '<pre>';print_r($cognomi);print '</pre>';   
    print 
    '<pre>';print_r($nomi);print '</pre>';   
    $i=0;
    foreach(
    $cognomi as  $key=>$v){
        
    $i++;
        
    $newCognomi[$i]= $cognomi[$key];
        
    $newNomi[$i]= $nomi[$key];
    }

    $cognomi $newCognomi;
    $nomi $newNomi;

    print 
    '<pre>';print_r($newCognomi);print '</pre>';   
    print 
    '<pre>';print_r($newNomi);print '</pre>'
    PS
    rigenero le chiavi partendo dalla numero 1 in poi.. se parte dalla zero, uguale senza $i;
    La vita e' uno switch();

  3. #3
    Grazie mille, ho modificato qualcosa ma funziona benissimo.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.