Знающие, объясните момент, пожалуйста)
Потихоньку изучаю php и есть вот задача: "Сделайте функцию, которая принимает строку на русском языке, а возвращает ее транслит."
Функция принимает строку на русском, дальше я разбираю ее в массив через $arr = str_split($str, 1);
Чтобы потом через цикл собрать строку обращаясь к ассоциативному массиву с алфавитом (где ключи - русские буквы, а значения английские) и вернуть получившийся результат
В общем суть в том, что при тесте возвращается пустая строка
Обнаружил, что при разбиении русской строки, например $str = 'аб', $arr = str_split($str, 1);
В массиве оказываются 4 значения вместо двух
Такой вывод:
Array ( [0] => [1] => [2] => [3] => )
А если использовать разбиение по 2 символам $arr = str_split($str, 2);
То всё ок работает:
Array ( [0] => а [1] => б )
Почему так происходит? Из за кодировки?
Вот примерный код:
function translit($str) {
$alph = [
'а' => 'a',
'б' => 'b'
];
$arr = str_split($str, 2);
$result;
foreach($arr as $item) {
$result .= $alph[$item];
}
return $result;
}
$str = 'аб';
var_dump(translit($str));