Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Array Multidimensionale Unique

    Ciao!

    Il mio problema, spero possiate e vogliate aiutarmi...

    Ho un array multidim:

    Array
    (
    [0] => Array
    (
    [NOMI] => stamp1
    [X] => 883
    [Y] => 30
    )

    [1] => Array
    (
    [NOMI] => login
    [X] => 247
    [Y] => 174
    )

    [2] => Array
    (
    [NOMI] => logo
    [X] => -104
    [Y] => 4
    )

    [3] => Array
    (
    [NOMI] => avatar1
    [X] => 121
    [Y] => 259
    )

    [4] => Array
    (
    [NOMI] => stamp2
    [X] => 953
    [Y] => 146
    )

    [5] => Array
    (
    [NOMI] => avatar1
    [X] => 126
    [Y] => 155
    )

    [6] => Array
    (
    [NOMI] => stamp2
    [X] => 830
    [Y] => 99
    )

    )

    Notate che ci sono dei valori uguali nel [NOMI] (stamp2 e avatar1)

    Ho bisogno di trasformare l'array in un nuovo array con gli ultimi valori unici... quindi:

    Array
    (
    [0] => Array
    (
    [NOMI] => stamp1
    [X] => 883
    [Y] => 30
    )

    [1] => Array
    (
    [NOMI] => login
    [X] => 247
    [Y] => 174
    )

    [2] => Array
    (
    [NOMI] => logo
    [X] => -104
    [Y] => 4
    )

    [3] => Array
    (
    [NOMI] => avatar1
    [X] => 126
    [Y] => 155
    )

    [4] => Array
    (
    [NOMI] => stamp2
    [X] => 830
    [Y] => 99
    )

    )

    Si puo fare?
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  2. #2

  3. #3
    ehehehe e te pare semplice... come applicare array_filter al mio prolema?
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  4. #4
    E' piuttosto semplice:

    Codice PHP:
    <pre>
    <?php 

    $array 
    = array();

    $array[]['name'] = 'A';
    $array[]['name'] = 'A';
    $array[]['name'] = 'B';
    $array[]['name'] = 'C';

    $names = array();
    foreach(
    $array as $data) {
        if (!
    in_array($data['name'], $names)) {
            
    $names[$data['name']] = $data['name'];
        }
    }

    function 
    filter($var) {
        global 
    $names;
        
    $return = isset($names[$var['name']]);
        if (
    $return) {
            unset(
    $names[$var['name']]);
        }
        return 
    $return;
    }

    $array array_filter($array'filter');

    print_r($array);

    ?>
    </pre>
    Per evitare la "porcata" di global $names; puoi sempre implementarlo all'intern di una classe.

  5. #5
    Grazie per le risposte... potresti spiegarmi il codice?
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  6. #6

  7. #7
    codice:
    <?php
    
    $array = array();
    
    $array[]['name'] = 'A';
    $array[]['name'] = 'A';
    $array[]['name'] = 'B';
    $array[]['name'] = 'C';
    Qui c'è l'array, che è vagamente diverso dal mio...

    $array[0]['NOMI'] = 'A';
    $array[0]['X'] = '1';
    $array[0]['Y'] = '2';

    $array[1]['NOMI'] = 'B';
    $array[1]['X'] = '1';
    $array[1]['Y'] = '2';

    $array[2]['NOMI'] = 'C';
    $array[2]['X'] = '1';
    $array[2]['Y'] = '2';

    $array[3]['NOMI'] = 'A';
    $array[3]['X'] = '1';
    $array[3]['Y'] = '2';

    Io devo eliminare il primo $array[0] perchè il [NOMI] è uguale a $array[3] chè è più "nuovo" rispetto a $array[0]

    codice:
    $names = array();
    foreach($array as $data) {
        if (!in_array($data['name'], $names)) {
            $names[$data['name']] = $data['name'];
        }
    }
    Qui non capisco cosa fai, scorri l'array e....

    codice:
    function filter($var) {
        global $names;
        $return = isset($names[$var['name']]);
        if ($return) {
            unset($names[$var['name']]);
        }
        return $return;
    }
    
    $array = array_filter($array, 'filter');
    
    print_r($array);
    
    ?>
    Infine, non avendo capito come funziona la funzione array_filter non capisco neanche questa parte!!

    Scusami ma dovresti essere così gentile da spiegarmi il codice passo passo...
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  8. #8
    Cmq ho provato il tuo codice... ma non fa quello che serve a me...

    il mio ARRAY
    codice:
    (
        [0] => Array
            (
                [NOMI] => login
                [X] => 252
                [Y] => 113
            )
    
        [1] => Array
            (
                [NOMI] => avatar1
                [X] => 54
                [Y] => 141
            )
    
        [2] => Array
            (
                [NOMI] => stamp2
                [X] => 792
                [Y] => 210
            )
    
        [3] => Array
            (
                [NOMI] => login
                [X] => 366
                [Y] => 139
            )
    
        [4] => Array
            (
                [NOMI] => stamp1
                [X] => 639
                [Y] => 25
            )
    
    )
    RISULTATO del tuo codice:

    codice:
    (
        [0] => Array
            (
                [NOMI] => login
                [X] => 252
                [Y] => 113
            )
    
        [1] => Array
            (
                [NOMI] => avatar1
                [X] => 54
                [Y] => 141
            )
    
        [2] => Array
            (
                [NOMI] => stamp2
                [X] => 792
                [Y] => 210
            )
    
        [4] => Array
            (
                [NOMI] => stamp1
                [X] => 639
                [Y] => 25
            )
    
    )
    INVECE quello che dovrebbe essere il risultato che mi serve

    codice:
    (
    
        [0] => Array
            (
                [NOMI] => avatar1
                [X] => 54
                [Y] => 141
            )
    
        [1] => Array
            (
                [NOMI] => stamp2
                [X] => 792
                [Y] => 210
            )
    
        [2] => Array
            (
                [NOMI] => login
                [X] => 366
                [Y] => 139
            )
    
        [3] => Array
            (
                [NOMI] => stamp1
                [X] => 639
                [Y] => 25
            )
    
    )
    Nota quel'è l'array da buttare perchè duplicato... e a me serve l'ultimo!!

    Ci sono due Array con [NOMI] = login

    codice:
        [0] => Array
            (
                [NOMI] => login
                [X] => 252
                [Y] => 113
            )
    codice:
        [3] => Array
            (
                [NOMI] => login
                [X] => 366
                [Y] => 139
            )
    Il Filtro deve filtrare quelli con indice più basso e mantenere solo l'ultimo (quindi il [3])!!
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  9. #9
    Magari... se... invertissi l'array prima di passarlo alla tua funzione... come disse quello... gli "ultimi saranno i primi!"

    Già... è possibile invertire un array?
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  10. #10

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.