Решал очередную задачу из курса. Ее условия: Объявите массив, где в качестве ключей будут использоваться названия областей, а в качестве значений – массивы с названиями городов из соответствующей области. Выведите в цикле значения массива, чтобы результат был в виде: Область город город ... С этим проблем не возникло. Вторая задача была, сделать тоже самое что и в первой задаче, только выводить города начинающиеся с определенной буквы. Тут и возникли проблемы. Если названия городов в массиве объявлены с использованием кириллицы, то условие которое проверяет первую букву в элементе массива не срабатывает и соответственно выводятся только регионы. PHP: <?php $city_from_region = array( "Московская" => array("Москва", "Орехово-Зуево", "Зеленоград", "Клин"), "Саратовская" => array("Саратов", "Энгельс", "Балашов"), "Самарская" => array("Самара", "Тольятти", "Сызрань") ); foreach ($city_from_region as $region => $city) { echo ( "<h2>$region</h2>". "<ul>" ); foreach ($city as $citys) { if($citys[0] == 'С') echo ("<li>$citys</li>"); } echo ("</ul>"); } ?> var_damp ($citys) при этом показывает корректное содержимое (строку с кириллицей). Но var_damp($citys[0]) выдает ромбик со знаком вопроса. Собственно поэтому условие и не срабатывает. Если же элементы массива на латинице, то все выводит как надо. PHP: <?php $city_from_region = array( "Moskovskaja" => array("Moskva", "Orehovo-Zuevo", "Zelenograd", "Klin"), "Saratovskaja" => array("Saratov", "Jengel's", "Balashov"), "Samarskaja" => array("Samara", "Tol'jatti", "Syzran"), "Leningradskaja" => array("Sankt-Peterburg", "Kronshtadt") ); foreach ($city_from_region as $region =>$city) { echo ( "<h2>$region</h2>". "<ul>" ); foreach ($city as $citys) { if($citys[0] == 'S') echo ("<li>$citys</li>"); } echo ("</ul>"); } ?> Вверху скрипта средствами html указана кодировка utf-8 HTML: <meta charset="UTF-8" /> Также добавлял PHP: mb_internal_encoding("UTF-8"); результат не менялся, по крайней мере невооруженным взглядом. Объясните пожалуйста в чем дело с кодировкой?
Проблема кроется в $citys[0] - данная возможность не вернет русский символ. нужно использовать mb_substr(); PHP: $city = 'Саратов'; echo mb_substr($city, 0, 1, 'utf-8'); // С