@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 именно того формата, что вам нужен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы