¿Cómo iterar la cadena UTF-8 en PHP?

¿Cómo iterar un carácter de cadena UTF-8 por carácter usando indexación?

Cuando accede a una cadena UTF-8 con el operador de soporte$str[0] El carácter codificado en utf consta de 2 o más elementos.

Por ejemplo:

$str = "Kąt";
$str[0] = "K";
$str[1] = "�";
$str[2] = "�";
$str[3] = "t";

pero me gustaría tener:

$str[0] = "K";
$str[1] = "ą";
$str[2] = "t";

Es posible conmb_substr pero esto es extremadamente lento, es decir.

mb_substr($str, 0, 1) = "K"
mb_substr($str, 1, 1) = "ą"
mb_substr($str, 2, 1) = "t"

¿Hay otra manera de interactuar la cadena carácter por carácter sin usarmb_substr?