Originariamente inviato da Secta
Codice PHP:
session_start();

if (!isset(
$_SESSION['nomi']))
{
    
$nome = array('nome1''nome2''nome3''nome4''nome5''nome6');  
    
$ks array_rand($nome4);
    
$_SESSION['nomi'] = array(
        
=> $nome[$ks[0]],
        
=> $nome[$ks[1]],
        
=> $nome[$ks[2]],
        
=> $nome[$ks[3]]
    );
}

foreach (
$_SESSION['nomi'] as $value)
{
    echo 
$value '
'
;

Questo è sbagliato perchè non trattiene le estrazioni, estrae i dati una sola volta e aggiornando la pagina ripresenta sempre lo stesso quartetto.

Originariamente inviato da Secta
Non è meglio se salva in sessione direttamente i nomi?
Questo è l'eterno dilemma tra occupazione di memoria e prestazioni del sistema!
Dipende. Il dato occupa solitamente più memoria di un riferimento, al costo di un overhead rispetto ai tempi d'esecuzione. Stiamo comunque parlando della lettura in più di variabile, ovverosia di nulla.

L'unico vero motivo che potrebbe indurmi a memorizzare il dato, invece di un indice, è la necessità di storicizzare l'estrazione al fine di prevenire l'influenza susseguente la variazione del contenuto della sorgente dati (l'array $nome). Ma questi sono requisiti di progetto non specificati nel post iniziale.

Spero di essere riuscito a spiegarmi.