[] operator not supported for strings

D
На сайте с 28.06.2008
Offline
997
241

Ох я тут такое наговнокодил :))) аж самому страшно. В общем написал парсер, он работает, но иногда спотыкается обо что-то и выводит ошибку

[] operator not supported for strings

Вывод ошибок включен, но все равно больше никакой инфы, даже номера строки нет.

Методом научного тыка установил кусок кода в парсере который ее вызывает, прошу помочь найти ошибку

<?php

preg_match_all('~(.*)-([0-9|]{3,})~ms', $lev3->links, $parsImg);
$urlInter = "https://site.com/&id=".$parsImg[2][0];
$Inter = file_get_contents($urlInter);
$Inter = json_decode ($Inter,1);

$final1 = "
<div id=\"list\" style=\"display: block;\">
<h4 class=\"list\" style=\"color:red\">Contrain". " (".count($Inter['Sever']['Contrain']). ")</h4>
<ul id=\"list1\">";
foreach ($Inter['Sever']['Contrain'] as $item){
$i= $item["actions"]["Contrain"][0];
$final2[] = array();
$final2[] = " <li>" .$item['name'] ."
<p class=\"text\">" .$Inter["actions"][$i]["text"]. "</p>
</li>";
}
$final3 = "</ul></div>";

$final4 = "
<div id=\"list\" style=\"display: block;\">
<h4 class=\"list\" style=\"color:orange\">Alternative". " (".count($Inter['Sever']['Alternative']). ")</h4>
<ul id=\"list1\">";
foreach ($Inter['Sever']['Alternative'] as $item){
$i= $item["actions"]["Alternative"][0];
$final5[] = array();
$final5[] = " <li>" .$item['name'] ."
<p class=\"text\">" .$Inter["actions"][$i]["text"]. "</p>
</li>";
}
$final6 = "</ul></div>";

$final7 = "
<div id=\"list\" style=\"display: block;\">
<h4 class=\"list\" style=\"color:green\">Alternative". " (".count($Inter['Sever']['Closely']). ")</h4>
<ul id=\"list1\">";
foreach ($Inter['Sever']['Closely'] as $item){
$i= $item["actions"]["Closely"][0];
$final8[] = array();
$final8[] = " <li>" .$item['name'] ."
<p class=\"text\">" .$Inter["actions"][$i]["text"]. "</p>
</li>";
}
$final9 = "</ul></div>";
$final2 = implode($final2);
$final5 = implode($final5);
$final8 = implode($final8);
$InterFinal = $final1 . $final2 . $final3 . $final4 . $final5 . $final6 . $final7 . $final8 .$final9;
$InterFinal = str_ireplace("'", "\'", $InterFinal);
//var_dump($InterFinal);



---------- Добавлено 09.06.2019 в 18:09 ----------

Удалось еще сузить круг поисков - ошибка тут

$final2 = implode($final2);
$final5 = implode($final5);
$final8 = implode($final8);

Что не так?

R
На сайте с 27.02.2016
Offline
38
#1
$final2[] = array();
$final5[] = array();
$final8[] = array();

https://www.php.net/manual/ru/language.types.array.php

$final2 = implode($final2);
$final5 = implode($final5);
$final8 = implode($final8);

https://www.php.net/manual/ru/function.implode.php

Вывод ошибок включен, но все равно больше никакой инфы, даже номера строки нет.

Установка xdebug может помочь https://xdebug.org/download.php

S
На сайте с 30.09.2016
Offline
469
#2
Dram:
Что не так?

Не знаю, что ещё не так, но в первую очередь разберись с выражениями типа

$final2 = implode($final2);

Половина элементов массивов $final2, $final5 и $final8 сами являются массивами, а функция implode() сцепляет строчные элементы.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
D
На сайте с 28.06.2008
Offline
997
#3

Понял спс!!!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий