differenza concreta tra array_rand e shuffle

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
Qualcuno mi può spiegare qual'è la differenza concreta tra array_rand($array) e shuffle($array);? entrambi non hanno l'univoco scopo di spargere casualmente gli elementi dell'array?
 
array_rand() prende un array passato per riferimento e poi tu decidi quanti di quei valori vanno "randomizzati", l'esempio sul manuale è chiaro:
PHP:
<?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>
In pratica dice di prendere due valori dall'array $input e mostrarli, se lo modifichi e ci metti un'istruzione print_r($rand_keys) ti dice quali dei cinque valori di $input prende ad ogni chiamata. Predefinito è un solo valore!
Morpheus Tank Array ( [0] => 1 [1] => 4 )
shuffle() invece prende un array completo e lo mescola, non hai il controllo su quanti valori prendere ogni volta, lo fa su tutti arbitrariamente.
 
ti ringrazio per la risposta; ma non riesco a cogliere la differenza pratica poiché è praticamente uguale scrivere:

Codice:
$array=array('emanuele','samantha','giovanni','claudio','pippo');
$x=array_rand($array,2);
echo $x[0]. ' ' . $x[1];

$array2=array('emanuele','samantha','giovanni','claudio','pippo');
shuffle($array2);
echo $array2[0] . ' ' . $array2[1];

anche se raggiunto in modo diverso il risultato non mi cambio; mi potresti dare un esempio pratico per cogliere la differenza sostanziale di queste funzioni?
 

Discussioni simili