Добрый вечер. Вот 3 строки кода: PHP: $a = "1"; $a[$a] = "2"; echo $a; Не могу понять, почему виводится значение 12 переменной $a. То есть, строки соединились? Объясните, пожалуйста, если можно.
А ты понял, что ты тут сделал? Строка в PHP позволяет обращаться с собой как с массивом байт, в некотором приближении. И что у нас получается? Ты сказал PHP: 1) Возьми строку "1". 2) Запиши в байт номер 1 цифру "2". 3) Длина строки - один однобайтовый символ. Единичка - это нулевой байт. Первый байт следует сразу за ней. Туда ты записал двойку. Получилось... 12!
Не только кириллица. Любой многобайтовый алфавит или многобайтовая кодировка будет ломаться, если ковырять строки побайтово. По этому для манипуляций со строками надо пользоваться специальными функциями и из mb_, то бишь мультибайтовыми, аналогами. Списки их есть в документации.