@skornew33

E_NOTICE: type 8 -- Undefined offset: -1 -- at line 11. В чем проблема?

Вот код:
<?php

$text = "{Al|La}la bl{bl|l b|lbl}lb. Cl{cl|lc}lc.";
$result = "";

preg_match_all("#[\{]{1}(.[^\}]*)[\}]{1}#", $text, $stringArray);

$attachmentsArray = $stringArray;

function replacement ($count, $attachmentsArray, $result) {
    $tok = strtok($attachmentsArray[1][$count - 1], "|");
    
    while ($tok !== false) {
        $replaceArray[$count - 1] = $tok;
        
        $tok = strtok("|");
        
        if ($count > 0) {
            replacement($count - 1, $attachmentsArray, $result);
        } else {
            $replaceArray = array_reverse($replaceArray);
            $result .= str_replace($attachmentsArray[0], $replaceArray, $text); $result .= "<br>";
            $replaceArray = array_reverse($replaceArray);
        }
    }
}

replacement(count($attachmentsArray[1]), $attachmentsArray, $result);

//$result .= str_replace($stringArray[0], replacement(count($stringArray[1])) , $text); $result .= "<br>";

echo $text . "<br><br>"; echo $result; echo "<br>";

/*$tok = strtok($stringArray[1][1], "|");

while ($tok !== false) {
    echo "Word = $tok<br>";
    $tok = strtok("|");
}*/

?>

А вот результат:
5e8781cfa87e4699730265.png
Не могу понять, что это значит, что неверно и что делать?
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
Код не запускал, но скорее всего в строке
replacement(count($attachmentsArray[1]), $attachmentsArray, $result);

`$attachmentsArray[1]` пустой. Поэтому внутрь функции передаётся $count=0, ну и дальше обращение к массиву с индексом $count - 1, то есть -1.

Проверьте, что preg_replace_all возвращает то, что нужно. И добавьте условие с проверкой до вызова функции, что $attachmentsArray именно того формата, что вам нужен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Spice IT Recruitment Москва
До 230 000 ₽
ImageSpark Санкт-Петербург
от 60 000 ₽
FrozenEon Киев
от 1 500 до 3 000 $
07 июн. 2020, в 03:38
1000 руб./за проект
07 июн. 2020, в 01:42
300000 руб./за проект