Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909

    array_diff multidimensionale

    vi chiedo aiuto per confrontare 2 array multidimensionali

    codice:
    Array1
    (
        [0] => Array
            (
                [0] => legno
                [1] => giallo
            )
    
        [1] => Array
            (
                [0] => legno
                [1] => rosso
            )
    
        [2] => Array
            (
                [0] => acciaio
                [1] => blue
            )
    
        [3] => Array
            (
                [0] => acciaio
                [1] => rosso
            )
    
        [4] => Array
            (
                [0] => acciaio
                [1] => verde
            )
    
    )
    
    
    Array2
    (
        [0] => Array
            (
                [0] => legno
                [1] => giallo
            )
    
        [1] => Array
            (
                [0] => legno
                [1] => rosso
            )
    
        [2] => Array
            (
                [0] => acciaio
                [1] => blue
            )
    
    
        [3] => Array
            (
                [0] => acciaio
                [1] => verde
            )
    
    )
    vorrei visualizzare la differenza di questi 2 array sia che manchi l'intera classe(legno) sia, come nel caso specifico, pur essendoci la classe, manchi il valore (rosso).

  2. #2
    dovresti usare array_diff del php...
    leggi qui
    http://www.php.net/manual/en/function.array-diff.php
    www.mondosviluppatori.it
    La tua migliore risorsa sulla programmazione, numerose guide, sorgenti e tutorial da scaricare gratuitamente.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    ho già provato ma con array_diff mi pare di aver capito che posso trovare la differenza solo tra classe e non anche sottoclasse

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    up pls

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    up

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    nessuno mi darebbe una mano??

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    usa un array_diff dentro un array_map

    edit, come non detto, array_map funziona solo su due array delle stesse dimensioni.

    a questo punto devi andare sul custom e ciclare da solo il tutto

    http://it.php.net/manual/en/function...diff.php#91756

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    giuro, nn riesco

    magari proviamo a farlo insieme, a me la funzione "arrayRecursiveDiff" non restituisce nulla!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    questo è quello che ho scritto:
    codice:
    $aDiff[] = array('0' => 'classe10', '1' => 1); 
    $aDiff[] = array('0' => 'classe10', '1' => 2); 
    $aDiff[] = array('0' => 'classe20', '1' => 3); 
    
    $bDiff[] = array('0' => 'classe10', '1' => 2); 
    
    
    function arrayRecursiveDiff($aArray1, $aArray2) {
        $aReturn = array();
      
        foreach ($aArray1 as $mKey => $mValue) {
            if (array_key_exists($mKey, $aArray2)) {
                if (is_array($mValue)) {
                    $aRecursiveDiff = arrayRecursiveDiff($mValue, $aArray2[$mKey]);
                    if (count($aRecursiveDiff)) { $aReturn[$mKey] = $aRecursiveDiff; }
                } else {
                    if ($mValue != $aArray2[$mKey]) {
                        $aReturn[$mKey] = $mValue;
                    }
                }
            } else {
                $aReturn[$mKey] = $mValue;
            }
        }
      
        return $aReturn;
    } 
    
    print_r(arrayRecursiveDiff($bDiff, $aDiff));
    però il risultato non è quello che mi aspetto:
    codice:
    Array
    (
        [0] => Array
            (
                [1] => 2
            )
    
    )
    //invece dovrebbe restituirmi:
    Array
    (
        [0] => Array
            (
                [0] => classe10
                [1] => 1
            )
    
        [1] => Array
            (
                [0] => classe20
                [1] => 3
            )
    
    )

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    attualmente ti sta facendo il lavoro al contrario e non sta restituendo le chiavi correttamente.

    sono modifiche abbastanza semplici da fare, visto anche quanto è breve il listato.

    io al momento non ho tempo di farti vedere come però o.o

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.