php 7 и foreach

avgaz

Новичок
Здравствуйте, подскажите как поправить что бы на php 7 работал следующий код
Код:
require "$lang/$file_lang";
     foreach ($langs as $k => $v) {
       $this->lang[$k] = stripslashes($v);
     }
содержимое файлов $file_lang
Код:
$langs['title'] = "Название";
$langs['categor'] = "Категория";
$langs['rew_url'] = "ЧПУ замена";
$langs['testo'] = "Полное описание";
......
 
Последнее редактирование:

avgaz

Новичок
@antson, не выдает не каких ошибок, просто место языковых слов по одному � а на php 5.6 все внорме
 

fixxxer

К.О.
Партнер клуба
У тебя где-то проблемы с кодировкой, версия php к этому не имеет отношения.

Sttipslashes, кстати, там вообще не нужно. Ни в какой версии. (До версии 5.4 была идиотская настройка magic_quotes_runtime, из-за которой могло понадобиться, но никто в здравом уме эту настройку не включал).
 

avgaz

Новичок
У тебя где-то проблемы с кодировкой, версия php к этому не имеет отношения.
Я тоже так изначально подумал, но если кириллицу заменить на латиницу или цифровые значения то все равно не чего не меняется везде где есть вывод из языковых файлов по одному � то есть как будто выводит только один символ
попробовал даже добавить в код выше echo $v; что бы посмотреть что хоть выводит там все нормально вывело все слова кучей в нормальной кодировке. Поискал, что в php 7 в foreach произошли изменения решил спросить как именно подправить, что бы работало ((
смотрю на код присвоения. Написан во времена php 5.2 (5.4)?
Да очень старый скрипт.
Сравниваете старую площадку и новый хостинг c дефолтными конфигами?
предполагаю, что у вас еще все в 1251 . угадал ?
Нет пытаюсь все переделать на опенсервере, все в UTF-8 и default_charset UTF-8
 
Последнее редактирование:

Фанат

oncle terrible
Команда форума
Автор. Значит, смотри.
У тебя очень большие проблемы

1. У тебя проблемы с логикой. Ты вбил себе в голову, что проблема с foreach, и до сих пор пытаешься ее решить, хотя очевидно, что простой перебор массива НИКАК на кодировку не влияет.
И даже после того как внутри foreach ты для проверки выводишь значение и убеждаешься что оно нормальное, все равно воображаешь, что виноват именно этот оператор.
2. Ты в принципе не умеешь поставить себя на место другого человека, который не видит твой код и твой экран. Невнятное "ниработит" можно говорить мамке, чтобы она тебе нос вытерла.
Если же ты хочешь получить помощь у незнакомых людей, научись описывать свои проблемы подробно, с максимумом деталей: что делаешь, какие исходные данные, какой код, какой результат ожидаешь, какой результат получаешь. Всё это - старательной копипастой, а не в стиле изложения "Гроза летом", которое пишут в третьем классе.

В общем, либо ты быстро научишься задавать вопросы, либо этот топик будет закрыт, чтобы люди не тратили свое время, вытягивая из тебя информацию по одному слову
 

avgaz

Новичок
Проблему решил, ошибка была в следующем, в начале класса переменная была обозначена так var $lang = ""; а в php 7 уже foreach так не работал Warning: Illegal string offset
обозначил так var $lang = []; и все заработала, хотя на php 5.6 нормально было
 

Фанат

oncle terrible
Команда форума
Даже после того как РНР человеческим языком сказал ему, где проблема, он всё равно думает, что виноват был foreach :)))
 

Фанат

oncle terrible
Команда форума
Интересно, дойдет до него когда-нибудь что foreach здесь вообще лишний? :)
Принимаю ставки на сроки. Я ставлю на то что дойдет не раньше, чем через два года.
 

Фанат

oncle terrible
Команда форума
Фанат спокойней. Человеку пхп требуется редко. Прошлый вопрос от него был 2 года назад
Вообще-то я спокоен :)
Кому что требуется - вопрос десятый. Умение разговаривать с людьми - оно универсальное.
К доктору он тоже так же ходит, "- я есть не могу. У вас челюсть сломана? - нет. Желудок болит? - нет. -А что же тогда? мы с приятелем баловались макрофлексом"?
 
Сверху