Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188

    Array senza [ ]: come usarli?

    Mi arrivano una serie di dati in un'array dove però l'indice non è separato.
    Ovvero mi arrivano una serie di dati così:

    codice:
        [nome2] => Michael
        [cognome2] => Donovan
        [nome3] => Raymond
        [cognome3] => Storey
        [nome4] => Steve
        [cognome4] => Bacic
        [nome5] => Jeremy
        [cognome5] => Guilbaut
        [nome6] => Zoie
        [cognome6] => Palmer
        [nome7] => Steve
        [cognome7] => Bacic
    
    ecc.
    Come usarli?
    PHP per lavorarli li vorrebbe ovviamente così:

    codice:
        nome[2] => Michael
        cognome[2] => Donovan
        nome[3] => Raymond
        cognome[3] => Storey
        nome[4] => Steve
        cognome[4] => Bacic
        nome[5] => Jeremy
        cognome[5] => Guilbaut
        nome[6] => Zoie
        cognome[6] => Palmer
        nome[7] => Steve
        cognome[7] => Bacic
    ma non li ho!
    Come usarli, allora?
    Ho provato a fregarmene ed usare comuqnue:
    codice:
    $dato[$i]=$nome[$i];
    e varie alternative:
    codice:
    $dato[$i]=$nome$[$i];
    $dato[$i]=$nome$$];
    $dato[$i]=$nome$i$i;
    $dato[$i]="nome".$i;
    ecc...
    ma sempre senza successo.

    Nella peggiore delle ipotesi potrei scrivere a mano un ciclo 'umano' generando errori quando i record ii ha finiti, cioè una cosa così:
    codice:
    $dato[]=$nome2;
    $dato[]=$nome3;
    $dato[]=$nome4;
    ma ovviamente è una porcata...
    Qualche idea di estrazione elegante?

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    se ho capito bene, ti serve una cosa tipo questa
    codice:
    array generale
         array nome 
              valore1
              valore2
              valoreN
         array cognome
              valore1
              valore2
              valoreN
    guarda se questo fa al caso tuo
    Codice PHP:
    $pattern_cat "/[\w]+/";
    $pattern_indice "/[\d]+/";


    $final_array = array();


    $contenuto file_get_contents('file.txt');
    $righe explode("\n"$contenuto);


    foreach(
    $righe as $riga) {
        
    $dati explode(" => "$riga);
        
    preg_match($pattern_indice$dati[0], $match_index);
        
    $indice $match_index[0];
        
    preg_match($pattern_cat$dati[0], $match_index);
        
    $cat_array $match_index[0];
        
    $valore $dati[1];
        
    $final_array[$cat_array][$indice] = $valore;
    }
    print_r($final_array); 
    Ultima modifica di clasku; 10-08-2014 a 18:03

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188
    Wow!
    In effetti è abbastanza semplice la 'soluzione'.
    Da quel che ho capito con le espressioni regolari spezzi il nome in nome e numero e quindi associ nell'array classico.

    Semplice ed elegante come idea, anche se mi sembra un po' troppo complessa la realizzazione.
    Forse con un INTVAL riesco a tirare fuori il numero e semplifico tutto.

    Se ci arrivo, posto la cosa, grazie intantO!

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    intval? e come vorresti usarlo?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188
    Hai ragione, non posso usarlo, infatti non devo estrarre un numero a una variabile ma dal nome della variabile stessa.

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo.

    Codice PHP:
    <?php    
    $a 
    = array();        
    $a[]= '[nome2] => Michael';    
    $a[]= '[cognome2] => Donovan';    
    $a[]= '[nome3] => Raymond';    
    $a[]= '[cognome3] => Storey';    
    $a[]= '[nome4] => Steve';    
    $a[]= '[cognome4] => Bacic';    
    $a[]= '[nome5] => Jeremy';    
    $a[]= '[cognome5] => Guilbaut';    
    $a[]= '[nome6] => Zoie';    
    $a[]= '[cognome6] => Palmer';    
    $a[]= '[nome7] => Steve';    
    $a[]= '[cognome7] => Bacic';

    foreach (
    $a as $b) {  
      list(
    $var$numero$valore) = sscanf($b"[%[a-z]%d] => %s");  
      
    $array[$var][$numero] = $valore;
    }
    var_dump($array);
    ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Volendo.

    Codice PHP:
    <?php    
    $a 
    = array();        
    $a[]= '[nome2] => Michael';    
    $a[]= '[cognome2] => Donovan';    
    $a[]= '[nome3] => Raymond';    
    $a[]= '[cognome3] => Storey';    
    $a[]= '[nome4] => Steve';    
    $a[]= '[cognome4] => Bacic';    
    $a[]= '[nome5] => Jeremy';    
    $a[]= '[cognome5] => Guilbaut';    
    $a[]= '[nome6] => Zoie';    
    $a[]= '[cognome6] => Palmer';    
    $a[]= '[nome7] => Steve';    
    $a[]= '[cognome7] => Bacic';

    foreach (
    $a as $b) {  
      
    sscanf($b"[%[a-z]%d] => %s",$var,$numero,$array[$var][$numero]);
    }
    var_dump($array);
    ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188
    Vabbè, ma così allora è ancora più facile:

    codice:
    $nome[]=$nome1;   $cognome[]=$cognome1;
    $nome[]=$nome2;   $cognome[]=$cognome2;
    $nome[]=$nome3;   $cognome[]=$cognome3;
    $nome[]=$nome4;   $cognome[]=$cognome4;
    $nome[]=$nome5;   $cognome[]=$cognome5;
    $nome[]=$nome6;   $cognome[]=$cognome6;
    $nome[]=$nome7;   $cognome[]=$cognome7;
    $nome[]=$nome8;   $cognome[]=$cognome8;
    $nome[]=$nome9;   $cognome[]=$cognome9;
    $nome[]=$nome10; $cognome[]=$cognome10;
    $nome[]=$nome11; $cognome[]=$cognome11;
    $nome[]=$nome12; $cognome[]=$cognome12;
    $nome[]=$nome13; $cognome[]=$cognome13;
    $nome[]=$nome14; $cognome[]=$cognome14;
    $nome[]=$nome15; $cognome[]=$cognome15;
    $nome[]=$nome16; $cognome[]=$cognome16;
    $nome[]=$nome17; $cognome[]=$cognome17;
    $nome[]=$nome18; $cognome[]=$cognome18;
    $nome[]=$nome19; $cognome[]=$cognome19;
    $nome[]=$nome20; $cognome[]=$cognome20;
    $nome[]=$nome21; $cognome[]=$cognome21;
    ecc
    io volevo evitare elenchi di codice ripetuto, e poi il numero di elementi può cambiare (ma in effetti me ne frego di eventuali errori...).

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non ho capito.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    lui pensa di dover riempire a mano il tuo array $a... almeno credo

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.