@vottakoinick

Почему переменная пустая?

что бы проверить я записываю переменную в поле в настройках модуля битрикс Option::set($module_id, 'sssss', $selected_cat );. вывести через print_r не получиться.
В комментариях вроде всё понятно. Цикл 1 проходит и записывает переменную, а на 2 цикле она пустая больше в коде я нигде не испольщую такую переменную $selected_cat. Вообще не могу понять как такое возможно.

Условие " if ($arOption[0] == 'start_load_product') {" выполняется на второй интерации, а if ($arOption[0] == 'select_cat') { на первой.

$selected_cat = 1111; // если тут прописать переменную, то выводит её значение которое тут
    foreach ($aTabs as $aTab) { 
        foreach ($aTab['OPTIONS'] as $key => $arOption) {
            if ($request['apply']) { 
                $optionValue = $request->getPost($arOption[0]);
                if ($arOption[0] == 'select_cat') {
                        $selected_cat = $optionValue;
                        Option::set($module_id, 'qqqqq', $key );/// выводит 1
                }
                Option::set($module_id, 'sssss', $selected_cat );// выводит переменную
                if ($arOption[0] == 'start_load_product') {
                    echo  $key; // выводит 2
                    Option::set($module_id, 'qqqqq', $key );// выводит 2
                    Option::set($module_id, 'sssss', $selected_cat );// переменная пустая
                }

            }
        }
    }
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Так а в чем вопрос? У вас же переменная переписывается внутри цикла, во втором ифе? Учитесь дебажить:
$selected_cat = 1111; // если тут прописать переменную, то выводит её значение которое тут
$deb = [];
$i = 0;
    foreach ($aTabs as $aTab) { 
        foreach ($aTab['OPTIONS'] as $key => $arOption) {
        $deb[$i]['key'] = $key;
            if ($request['apply']) {
                $deb[$i]['apply'] = 1;
                $optionValue = $request->getPost($arOption[0]);
                $deb[$i]['optionValue']  = $optionValue;
                if ($arOption[0] == 'select_cat') {
                        $deb[$i]['arOption'] = $arOption[0];
                        $deb[$i]['selected_cat_1'] = $selected_cat;
                        $selected_cat = $optionValue; //тут у вас на какой-то итерации пусто, и переменная дохнет
                        $deb[$i]['selected_cat_2'] = $selected_cat;
                        Option::set($module_id, 'qqqqq', $key );/// выводит 1
                }
                Option::set($module_id, 'sssss', $selected_cat );// выводит переменную
                if ($arOption[0] == 'start_load_product') {
                    echo  $key; // выводит 2
                    Option::set($module_id, 'qqqqq', $key );// выводит 2
                    Option::set($module_id, 'sssss', $selected_cat );// переменная пустая
                }

            }
        }
        $i++;
    }
echo '<pre>' . print_r($deb,1).'</pre>'; exit;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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