Siento curiosidad, ¿como usando substr_count(), que devuelve el numero de subcadenas, has conseguido localizar una posicion en un array?
De todas formas, aqui va un codigo que podria funcionar:
Código PHP:
// $datos seria el array
$cuantos=2; // numero de gatitos a cambiar
$que_ori='Gato'; // la cadena original
$que_fin='Tigre'; // la cadena final
$faltan=$cuantos; // variable temporal
foreach ($datos as $indice => $valor) {
if ($que_ori==$valor) {
$datos[$indice]=$que_final;
$faltan--;
if (0==$faltan) break;
}
}
echo "Se han cambiado los ".($cuantos-$faltan)." $que_ori a $que_fin . ";
Saludos.
PD: Seguro que hay un codigo "mas mejor"