Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222

    Confronto numeri ripetuti in un array

    Ciao,
    come posso verificare se il valore di un array è ripetuto all'interno dell'array stesso?
    Io ho abbozzato una cosa così, ma non capisco bene come confrontare tutti i valori dell'array in una volta sola
    Codice PHP:
    <?php
        
    for ($i=0$i<20$i++) {
            
    $num[$i] = rand(1,100);
            echo 
    $num[$i] . '
    '
    ;
        }
        
        
    $control array_unique($num);
        if 
    $num == $control {
        echo 
    'Sono presenti numeri ripetuti';
        } else {
        echo 
    'Non sono presenti numeri ripetuti';
        }
    ?>
    E sempre su questa base come posso estrapolare il numero che viene ripetuto più volte all'interno dell'array?
    Grazie
    Si fanno sempre nuove scoperte

  2. #2
    prova così...
    Codice PHP:
    $a = array(1,2,5,5,2,5,4,8,5,1,5);
    $b array_unique($a);
    $esclusi array_diff_key($a$b);
    echo 
    '<pre>';
    print_r($a);
    print_r($esclusi); 
    fai qualche test anche con array_count_values
    http://www.php.net/manual/en/functio...unt-values.php
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  3. #3
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    Grazie, così funziona ed è tutto piuttosto chiaro
    Codice PHP:
    <?php
        
    for ($i=0$i<20$i++) {
            
    $num[$i] = rand(1,100);
            echo 
    $num[$i] . '
    '
    ;
        }
        
        
    // setto la variabile $control con la funzione array_unique
        // sulla variabile $num che rimuove i valori duplicati nell'array
        
    $control array_unique($num);
        
        
    // setto la variabile $excluded con la funzione array_diff_key
        // sulle variabili $num e $control. I valori di differenza
        // vengono estrapolati e saranno passati durante il print della variabile
        
    $excluded array_diff_key($num$control);
        echo 
    '<pre>';
        echo 
    'Numeri dell\'array $num
    '
    ;
        
    print_r($num);
        echo 
    'Numeri ripetuti nell\'array
    '
    ;
        
    print_r($excluded);
        echo 
    '</pre>';
    ?>
    array_count_values lo posso utilizzare per visualizzare il numero con più ripetizioni?
    Si fanno sempre nuove scoperte

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    dopo averla usata puoi usare asort() http://it.php.net/manual/en/function.asort.php
    così in testa all'array avrai l'elemento con più ripetizioni...
    Jekkil

  5. #5
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    @jekkil
    e per individuare precisamente il numero (o numeri) con più ripetizioni?


    Non capisco però come fare il sort.
    Attualmente ho implementato questo:
    Codice PHP:
    <?php
        
    for ($i=0$i<20$i++) {
            
    $num[$i] = rand(1,100);
            echo 
    $num[$i] . '
    '
    ;
        }
        
        
    $count = (array_count_values($num));
        
    $sort = (asort($count));
        echo 
    '<pre>';
        
    print_r($sort);
        echo 
    '</pre>';
    ?>
    ma non funziona, perché?
    Si fanno sempre nuove scoperte

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    non funziona perchè fai

    Codice PHP:
    $sort = (asort($count)); 
    cioè richiami la funzione asort su $count che in realtà non è un array, ma un numero.

    devi fare
    Codice PHP:
    asort($num); 
    perchè l'array da ordinare è $num!

    inoltre asort non restituisce un array, ma un booleano che ti dice se l'operazione è andata a buon fine.

    quindi, una volta richiamata l'operazione non devi stampare $sort, bensi $num stesso!!
    Jekkil

  7. #7
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    Ma così non mi ordina l'array numero di comparsa dei valori...
    Semplicemente ordina l'array...
    Si fanno sempre nuove scoperte

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    scusami, hai ragione...

    il problema era che fai
    Codice PHP:
    $sort = (asort($count));
    echo 
    '<pre>';
    print_r($sort); 
    invece devi fare

    Codice PHP:
    $sort = (asort($count));
    echo 
    '<pre>';
    print_r($count); 
    Jekkil

  9. #9
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    Mi pare non funzioni nemmeno così.
    Non ordina nulla.
    Si fanno sempre nuove scoperte

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    invece di far generare i numeri da 1 a 100 prova a farli generare da 1 a 10...vedrai che funziona..

    se non ti è chiaro il funzionamento, posta l'output che te lo spiego
    Jekkil

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.