前スレの611ですが解決しなかったのでもう一度書き込ませてください。

マルチバイト文字列の先頭から一文字ずつ取り出したいのですが、
どうやるのが作法というかパターンなんでしょうか。
$len = mb_strlen($text);
for ($i = 0; $i < $len; ++$i) {
 $c = mb_substr($text, $i, 1, 'utf-8');
}
みたいにmb_substrで一文字ずつとり出すという方法もありますが
これだときっと長さに対して二乗のオーダーがかかりますよね。
これを線形オーダーでやるにはどうすればよいのでしょうか。

以上です。
みなさんはどのようにしているのでしょう?