• User

    Estrarre elemento randon da un array ed scartarlo dalla prossima estrazione

    Buongiorno a tutti del forum... ho questo array, mi permette di estrarre i singoli nomi al suo interno in maniera random, vorrei che dopo aver estratto il nome, quello estratto non rientra piu in quelli da estrarre.. spero di essere stato chiaro. Grazie in anticipo.

    <?php
    function array_random_portieri($arr, $num = 1) {
    shuffle($arr);
    $r = array();
    for ($i = 0; $i < $num; $i++) {
    $r[] = $arr*;
    }
    return $num == 1 ? $r[0] : $r;
    }
    $portieri = array("Buffon", "Reina", "Sepe", "Casillas", "De Sanctis", "Marchetti", "Bizzarri", "Mirante", "Amelia");
    print_r(array_random_portieri($portieri));
    ?>


  • User

    Questo è il codice da utilizzare, ogni volta che lanci la pagina ti stampa a video i valori dell' array presi dal file txt senza inserire duplicati..


  • User

    Questo è il codice da utilizzare, ogni volta che lanci la pagina ti stampa a video i valori dell' array presi dal file txt senza inserire duplicati.. La funzione randomget crea un numero random senza duplicati, alla funzione devi passargli il numero iniziale, il numero totale dei parametri dell' array ed il numero totale dei numeri che ti servono, ti restituisce il numero e questo viene passato all' array nel ciclo for estraendo cosi i dati in maniera casuale e senza duplicati.

    <?php
    
    
    function randomGen($min, $max, $quantity) {
        $numbers = range($min, $max);
        shuffle($numbers);
        return array_slice($numbers, 0, $quantity);
    }
    
    
    $nomefile="testo.txt";
    $aprirefile=fopen($nomefile,"r");
    if(!$aprirefile) die ("Errore nella operazione con il file");
    $fileintero=fread($aprirefile,filesize($nomefile));
    fclose($aprirefile);
    
    
    $parametro=explode(",",$fileintero);
    $numbers = range(0, count($parametro));
    $val=randomGen(0,count($parametro),count($parametro));
    for ( $i = 0 ; $i <= count($parametro) ; $i++ )  
        {  
    echo $parametro[$val*]."-";
    } 
    ?>