Array to string conversion error

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
ZULI
Сообщения: 15
Зарегистрирован: 2015.11.09, 21:34

Array to string conversion error

Сообщение ZULI »

Подскажите плз такую штуку. Есть самописаный сайт, на нем работает код, когда я этот же код переношу в консольное приложение yii2 то вылазит Array to string conversion error

Опишу подробнее что происходит.

Есть текстовый файл внутри которого следующее
5|02.10.2020 20:20|Х/ф "Ганнибал: Восхождение"
5|02.10.2020 22:25|Х/ф "Космос между нами"
День недели, дата и время, название передачи. Нужно это дело занести в базу.

Код: Выделить всё

        $data = iconv("windows-1251", "UTF-8", file_get_contents( './import/' . $filename . '.txt' ) );
        $tv = explode("\n", $data);

        foreach ($tv as $line)
        {
        $ex1 = explode("|",$line);
        $ex2 = explode(" ",$ex1[1]);
        ... дальше заношу в базу $ex1[0] - день недели, $ex2[0] - дата, $ex2[1] - время, $ex1[2] - передача
        }
В обычном .php файле все это работает, а когда этот же код в yii2, он ругается на конверсию. Почему так? Как сделать правильно?

Получается оно не может $ex1[0], $ex2[0] и тп использовать как строку.
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Array to string conversion error

Сообщение Arhat109 »

Явных проблем не вижу, на какую конкретно строчку ругается? В целом "должно работать", т.к. специальных изменений нет, ну и ещё: какая версия PHP на сайте и в консоли?
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
ZULI
Сообщения: 15
Зарегистрирован: 2015.11.09, 21:34

Re: Array to string conversion error

Сообщение ZULI »

Версия php стоит 7.4.8. В том то и дело, что в просто создал файл test.php, туда эти же строчки и все пучком. Это меня и озадачивает.

ругается когда пытаешься отобразить $ex1[1] или подобный, хотя var_dump($ex1) выдает что это массив из строк и все в порядке.

Код: Выделить всё

array(3) {
  [0] =>
  string(1) "5"
  [1] =>
  string(16) "02.10.2020 20:20"
  [2] =>
" string(49) Х/ф "Ганнибал: Восхождение"
}
P.S. Интересно, почему в строке " string(49) перед строкой " стоит?
Последний раз редактировалось ZULI 2020.09.28, 16:34, всего редактировалось 1 раз.
ZULI
Сообщения: 15
Зарегистрирован: 2015.11.09, 21:34

Re: Array to string conversion error

Сообщение ZULI »

Фантастика, ушел по магазинам, вернулся, ничего не делал, но ошибка эта исчезла, теперь ругается при echo $ex1[2] - Undefined offset: 2, а вот $ex1[0] выдает исправно верно.
ZULI
Сообщения: 15
Зарегистрирован: 2015.11.09, 21:34

Re: Array to string conversion error

Сообщение ZULI »

Хм... это чудо, но оно ругается если в одной из строк нет |для разбивки, но как же в обычном php-файле то работает? В общем вроде я понял, там первая и последняя строка идет не такая, нужно их отбросить и тогда все в норме.
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Array to string conversion error

Сообщение Arhat109 »

Было подозрение, что формат строк разный, но смутил текст ошибки. У меня в 7.3 не помню, чтобы похожее встречалось. В любом случае, "любые внешние данные не верны" и стоит проверять результат explode() на форматность строки, как раз на случай отсутствия заданного кол-ва разделителей.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Array to string conversion error

Сообщение Arhat109 »

А можно проверять и разбивать сразу regexp-ом.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
kukuruku
Сообщения: 1318
Зарегистрирован: 2011.02.14, 11:36

Re: Array to string conversion error

Сообщение kukuruku »

может гдето юникод символ?
ZULI
Сообщения: 15
Зарегистрирован: 2015.11.09, 21:34

Re: Array to string conversion error

Сообщение ZULI »

kukuruku писал(а): 2020.09.29, 09:00 может гдето юникод символ?
да там строки неформатные были. решил проверкой сделать.
Arhat109 писал(а): 2020.09.29, 08:43 А можно проверять и разбивать сразу regexp-ом.
Да можно было, но не сильно силен в них, вроде в онлайн-конструкторе подобрал нужное, но почему-то не сработало.
Ответить