はじめに
文字列を先頭から順に一文字ずつ走査し、何らかの処理を行いたいケースがしばしばあります。いや、ないかな...。
マルチバイト文字を含む可能性がある場合
<?php
$s = "あいうえお";
for ($i = 0; $i < mb_strlen($s); $i++) {
$char = mb_substr($s, $i, 1, 'UTF-8');
echo "$i: $char \n";
}
他の方法。
PHP_4.2.0_以降
<?php
$s = "あaいbうcえdお";
foreach (preg_split('//u', $s, null, PREG_SPLIT_NO_EMPTY) as $i => $chr) {
echo "$i : $chr\n";
}
マルチバイト文字を絶対に含まない場合
<?php
$s = "ABCDE";
foreach (str_split($s, 1) as $i => $char) {
echo "$i: $char\n";
}