Veamos, este código es la simplificación de uno mas complicado.
Digamos que tengo un fichero frases.template con 6 frases tal que:
Código PHP:
Frase1
Frase2
Frase3
Frase4
Frase5
Frase6
Ese fichero es leido asi:
Código PHP:
$citas= split("\n",$GLOBALS[html]->template('base','citas'));
Por lo que, por cada salto de linea se agrega un valor al array citas.
El array contendra:
Código PHP:
Array (
[0] => Frase1
[1] => Frase2
[2] => Frase3
[3] => Frase4
[4] => Frase5
[5] => Frase6
[6] => ) 1
Observese, que $citas[6] sera vacío porque el ultimo salto de linea en el fichero tambien se cuenta.
Luego para 6 valores, tenemos 7 posiciones de array (del 0 al 6), luego count($citas) devuelve 7, y el rand se haría entre 0 y 7, puesto que la 7 no existe hay que restar un valor y como la 6 esta vacía, debemos restar otro. De ahi el -2 que me da problemas, ya que si no hubiese ese -2 podría hacer el array_rand() sin problemas de límites.