Escoge aleatoriamente el elemento en la matriz y luego quítalo de la matriz

Tengo una serie de frases. Me gustaría elegir al azar frases de la matriz en un bucle. No quiero elegir la misma frase más de una vez en el ciclo. Pensé que podría elegir la frase al azar y luego eliminarla antes del siguiente ciclo.

http://codepad.org/11l0nStX

<?php for($i=0; $i 

¿Es posible elegir al azar una frase diferente de la matriz en cada ciclo?

Mezcle la matriz en orden aleatorio, y solo desconecte el último elemento.

 $array = [...]; shuffle($array); while($element = array_pop($array)){ echo 'Random element:' . $element; } 

También puedes usar array_slice

 $ran_Num = array_rand($phrases); $ran_Phrase = array_slice($phrases, $ran_Num, 1); 

También puedes usar array_rand y array_splice

 $array = array('Hello Sailor','Acid Test','Bear Garden','Botch A Job','Dark Horse', 'In The Red','Man Up','Pan Out','Quid Pro Quo','Rub It In','Turncoat', 'Yes Man','All Wet','Bag Lady','Bean Feast','Big Wig'); $el = array_rand($array); $dat = $array[$el]; array_splice($array, $el, 1 ); 

Las otras respuestas aquí funcionan, pero quiero abordar su código.

 < ?php 

Saqué la definición de $phrases fuera del ciclo. Al configurarlo dentro del bucle, se restablecía cada vez y eso no es bueno.

 $phrases = array('Hello Sailor','Acid Test','Bear Garden','Botch A Job','Dark Horse', 'In The Red','Man Up','Pan Out','Quid Pro Quo','Rub It In','Turncoat', 'Yes Man','All Wet','Bag Lady','Bean Feast','Big Wig'); 

No me gusta contar, así que dejo que la computadora lo haga.

 for($i=0,$n=count($phrases); $i< $n; $i++){ $ran_Num = array_rand($phrases); $ran_Phrase = $phrases[$ran_Num]; 

Cuando desarma en una matriz, el valor que se encuentra dentro de los corchetes debe ser el índice del elemento de la matriz que desea eliminar, no el elemento de valor en sí. La variable dentro de los corchetes ha cambiado de $ran_Phrase a ran_Num

  unset($phrases[$ran_Num]); echo $ran_Phrase."\r\n"; echo count($phrases)."\r\n"; } ?> 

Coloque los valores seleccionados en una nueva matriz y luego verifique si existe en la nueva matriz si no la agrega.

 < ?php $phrases = array('Hello Sailor','Acid Test','Bear Garden','Botch A Job','Dark Horse', 'In The Red','Man Up','Pan Out','Quid Pro Quo','Rub It In','Turncoat', 'Yes Man','All Wet','Bag Lady','Bean Feast','Big Wig'); $default = 16; if($default > ($c = count($phrases))) $default = $c; $keys = array_rand($phrases, $default); $newPhrases = array(); foreach($keys as $key){ if(!isset($newPhrases[$key])){ $newPhrases[$key] = $phrases[$key]; } } print_r($newPhrases);