Почему php in_array() возвращает false, хотя должно true?
$gl = array('а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я');
$sogl = array('б', 'в', 'г', 'д', 'ж', 'з', 'й', 'к', 'л', 'м', 'н', 'п', 'р', 'с', 'т', 'ф', 'х', 'ц', 'ш', 'щ', 'ъ', 'ь', 'ч');
$str = $_GET['str'];
$str_array = str_split($str, 1);
$gl_counter = 0;
$sogl_counter = 0;
foreach ($str_array as $current_letter) {
if (in_array($current_letter, $gl)) {
$gl_counter++;
}
if (in_array($current_letter, $sogl)) {
$sogl_counter++;
}
}
echo $gl_counter;
echo ", ";
echo $sogl_counter;
В str_array у меня хранятся элементы массива, соответствующие каждой введенной букве в textarea. Затем, я хочу посчитать количество гласных и согласных букв в нем. Однако, счетчик не обновляется, потому что функция in_array всегда возвращает false. Однако же если заменить $current_letter на какую-то конкретную букву, например 'a', то тогда счетчик будет обновляться. Я пробовал вывести массив букв и он работает правильно (буквы выводятся). В чем проблема?
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Скорее всего вам надо использовать функцию mb_str_split для работы с многобайтовой строкой, которой является текст на русском. А str_split разбивает строку вот на такое:
