Не работает parse_str() после обновления на PHP 8.1

дальше сразу на это ругается: PHP Parse error: syntax error, unexpected token "foreach", expecting "function" or "const" in C:\OSPanel\domains\ааааа\engine\classes\iframePlayerClass.php on line 242

PHP:
        foreach ($arraySelectors as $keys => $val) {
            $checked = ($keys == $value) ? " selected" : "";

            switch ($activeSelector) {
            case 'source':
                $title = $this->sourceList[$keys];
                break;

            case 'series':
                $title = $keys . $this->iframeLang['txt_6'];
                break;

            default:
                $title = $this->dubbingList[$keys];
                break;
            }

            $select .= "<option value=\"{$keys}\"{$checked}>{$title}</option>";
        }

        return "<select name=\"{$activeSelector}\" onchange=\"IframePlayer.frontend.initPlayer('{$this->postId}', $( '.selectors select' ).serialize());\">" . $select . "</select>";
    }
так у тя $value нету, там же $val

PHP:
foreach ($arraySelectors as $keys => $val) {

            $checked = ($keys == $value) ? " selected" : "";

$keys == $value ? может $keys == $val
 
  • Автор темы
  • Модер.
  • #13
не помогает ни то ни другое :(
Скрытое содержимое доступно для зарегистрированных пользователей!
 
не помогает ни то ни другое :(
*** Скрытый текст не может быть процитирован. ***

Попробуйте залить этот файл, только параметры функции измените так:

private function InitSelector(
$activeSelector = '',
$value = '',
$arraySelectors = []
)
 
  • Автор темы
  • Модер.
  • #15
Попробуйте залить этот файл, только параметры функции измените так:

private function InitSelector(
$activeSelector = '',
$value = '',
$arraySelectors = []
)
Код:
 PHP Parse error:  syntax error, unexpected token "foreach", expecting "function" or "const" in C:\OSPanel\domains\aaaaaa\engine\classes\iframePlayerClass.php on line 242
строка
Код:
        foreach ($arraySelectors as $keys => $val) {
Пробовал и val и value, но ошибка так и остается на этом переборе foreach.
 
Код:
 PHP Parse error:  syntax error, unexpected token "foreach", expecting "function" or "const" in C:\OSPanel\domains\aaaaaa\engine\classes\iframePlayerClass.php on line 242
строка
Код:
        foreach ($arraySelectors as $keys => $val) {
Пробовал и val и value, но ошибка так и остается на этом переборе foreach.

Как у Вас сейчас этот файл выглядит?
 
*** Скрытый текст не может быть процитирован. ***

У Вас там функция закрывается раньше времени + неправильная переменная в условии. Она должна выглядеть так:
PHP:
/**
     * [initSelector description]
     * @param string $activeSelector [description]
     * @param [type] $value          [description]
     * @param array  $arraySelectors [description]
     */
    private function InitSelector(
    $activeSelector = '',
    $value = '',
    $arraySelectors = []
    ) {
        ksort($arraySelectors);

        foreach ($arraySelectors as $keys => $val) {
            $checked = ($keys == $value) ? " selected" : "";

            switch ($activeSelector) {
            case 'source':
                $title = $this->sourceList[$keys];
                break;

            case 'series':
                $title = $keys . $this->iframeLang['txt_6'];
                break;

            default:
                $title = $this->dubbingList[$keys];
                break;
            }

            $select .= "<option value=\"{$keys}\"{$checked}>{$title}</option>";
        }

        return "<select name=\"{$activeSelector}\" onchange=\"IframePlayer.frontend.initPlayer('{$this->postId}', $( '.selectors select' ).serialize());\">" . $select . "</select>";
    }
 
Ошибка возникает из-за неправильного расположения кода: цикл `foreach` находится вне тела метода.
После закрывающей фигурной скобки метода InitSelector() вдруг начинается цикл foreach, который не находится внутри какого-либо метода. Это явная синтаксическая ошибка. В PHP код вне методов класса не допускается, поэтому интерпретатор встречает foreach и не понимает, к чему он относится, отсюда ошибка "unexpected token foreach".
 
  • Автор темы
  • Модер.
  • #20
Получилось! Большое спасибо. Это получается лишняя ковычка здесь была и переменная всего лишь не верная была указана:
PHP:
    return $arraySelectors;
}
или это я уже накосячил где то когда править пытался. Щас уже оригинал файла не найду чтоб сравнить как был он изначально.
 
Назад
Сверху