Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    8

    Array multidimensionali,trovare valori uguali

    Ciao a tutti
    Non riesco a venir fuori da questo problema.
    Ho questo array
    Codice PHP:
    $tab = array (
      array(
    $vd1,$lo1,$ne1,$vl1),
      array(
    $vd2,$lo2,$ne2,$vl2),
      array(
    $vd3,$lo3,$ne3,$vl3),
      array(
    $vd4,$lo4,$ne4,$vl4),
      array(
    $vd(n),$lo(n),$ne(n),$vl(n)),
    ); 
    Ho bisogno di verificare se ci sono valori uguali tra di loro del primo elemento dei subarray ($vd) e di conseguenza sommare tra di loro di valori corrispondenti di $lo,$ne e $vl.
    L'output dovrebbe essere un array depurato dai valori duplicati di $vd
    Grazie in anticipo

  2. #2
    Rimappa l'array in modo che la chiave sia basata sul valore $vd(n).
    Poi cicla per tutto l'array e somma i valori.
    Alla fine ricostruisci l'array secondo la struttura che desideri.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    8
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Rimappa l'array in modo che la chiave sia basata sul valore $vd(n).
    Poi cicla per tutto l'array e somma i valori.
    Alla fine ricostruisci l'array secondo la struttura che desideri.
    Ti ringrazio per pronta risposta.
    Non riesco però a capire come confrontare le chiavi($vd) all'interno del ciclo.

  4. #4
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Rimappa l'array in modo che la chiave sia basata sul valore $vd(n).
    Posta il codice che hai scritto per implementare questa indicazione.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    8
    Codice PHP:
     for($a=1;$a<26 $a++) {
       
    $riga = array("${'vd'.$a}","${'lo'.$a}","${'ne'.$a}","${'vl'.$a}");
       
    $tab = array("${'vd'.$a}"=>$riga)


  6. #6
    Codice PHP:
        $max 26;
     
        
    // Setup variables for testing
        
    for ($i 1$i $max$i++) {
            ${
    'vd' $i} = rand(1round($max 4)); // Assure multiple items with the same key
            
    ${'lo' $i} = rand(110);
            ${
    'ne' $i} = rand(110);
            ${
    'vl' $i} = rand(110);
        }
     
        
    $tab = [];
        for (
    $i 1$i $max$i++) {
            
    $tab[] = [${'vd' $i}, ${'lo' $i}, ${'ne' $i}, ${'vl' $i}];
        }
     
        
    $mapping = [];
        foreach (
    $tab as $row) {
            
    $mapping[$row[0]][] = $row;
        }
     
        
    $results = [];
        foreach (
    $mapping as $id => $rows) {
            foreach (
    $rows as $row) {
                if (isset(
    $results[$id])) {
                    
    $results[$id] = [
                        
    $id,
                        
    $results[$id][1] + $row[1],
                        
    $results[$id][2] + $row[2],
                        
    $results[$id][3] + $row[3],
                    ];
                } else {
                    
    $results[$id] = $row;
                }
            }
        }
     
        
    print_r($results); 

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    8
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Codice PHP:
        $max 26;
     
        
    // Setup variables for testing
        
    for ($i 1$i $max$i++) {
            ${
    'vd' $i} = rand(1round($max 4)); // Assure multiple items with the same key
            
    ${'lo' $i} = rand(110);
            ${
    'ne' $i} = rand(110);
            ${
    'vl' $i} = rand(110);
        }
     
        
    $tab = [];
        for (
    $i 1$i $max$i++) {
            
    $tab[] = [${'vd' $i}, ${'lo' $i}, ${'ne' $i}, ${'vl' $i}];
        }
     
        
    $mapping = [];
        foreach (
    $tab as $row) {
            
    $mapping[$row[0]][] = $row;
        }
     
        
    $results = [];
        foreach (
    $mapping as $id => $rows) {
            foreach (
    $rows as $row) {
                if (isset(
    $results[$id])) {
                    
    $results[$id] = [
                        
    $id,
                        
    $results[$id][1] + $row[1],
                        
    $results[$id][2] + $row[2],
                        
    $results[$id][3] + $row[3],
                    ];
                } else {
                    
    $results[$id] = $row;
                }
            }
        }
     
        
    print_r($results); 
    questo mi crea un nuovo array con $vd come chiave; ora il mio problema è confrontare le chiavi e creare un altro array che ha delle chiavi uniche eliminando i duplicati e sommando i valori dei vari elementi a chiave uguale.

  8. #8

  9. #9
    Quote Originariamente inviata da muntzer Visualizza il messaggio
    Ciao a tutti
    Non riesco a venir fuori da questo problema.
    Ho questo array
    Codice PHP:
    $tab = array (
      array(
    $vd1,$lo1,$ne1,$vl1),
      array(
    $vd2,$lo2,$ne2,$vl2),
      array(
    $vd3,$lo3,$ne3,$vl3),
      array(
    $vd4,$lo4,$ne4,$vl4),
      array(
    $vd(n),$lo(n),$ne(n),$vl(n)),
    ); 
    Ho bisogno di verificare se ci sono valori uguali tra di loro del primo elemento dei subarray ($vd) e di conseguenza sommare tra di loro di valori corrispondenti di $lo,$ne e $vl.
    L'output dovrebbe essere un array depurato dai valori duplicati di $vd
    Grazie in anticipo
    In pratica, per esempio, se vd2 è uguale a vd9, tieni buono vd2 che conterrà vd2, lo2+lo9, ne2+ne9 ecc?

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    8
    Quote Originariamente inviata da Dascos Visualizza il messaggio
    In pratica, per esempio, se vd2 è uguale a vd9, tieni buono vd2 che conterrà vd2, lo2+lo9, ne2+ne9 ecc?
    esatto vorrei arrivare a questo risultato

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.