@Ingir_Max

Код php в другом блоке не отображает переменную из текущего блока?

Данный код
<? $a=1; ?>
<?=$a; ?>
Выдает ошибку
Notice: Undefined variable: a in C:\Server\data\htdocs\test.php on line 2
Получается, что <? ?> замыкает область видимости переменной на себе, и в другие блоки не передается.
Проблема появилась при миграции проекта на самоподнятый apache сервер с Open server.
Естественно, код
<? $a=1;
echo $a;
?>
Отрабатывает правильно. Php работает корректно. Пример отражает логику проекта, когда между блоками php находится какой-то html код.
Задаю вопрос впервые, всегда удавалось найти решение, но не в этот раз.
  • Вопрос задан
  • 137 просмотров
Решения вопроса 2
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
  • Открываем исходный код страницы по Ctrl-U и с удивлением видим там свое <? $a=1; ?> прямо в браузере.
  • После этого вспоминаем, что простой открывающий тег РНР (в отличие от сокращенного echo) пишется как <?php
  • Исправляем первый блок
  • Всё работает


В случае, если переменная все равно не видна, то скорее всего вы столкнулись с областью видимости переменных, обращаясь к переменной внутри функции, но от неграмотности вообразили, будто дело в "блоках".

чтобы значение переменной было видно внутри функции, её надо передать в виде параметра
function myfunc($a) {
    echo $a;
}
$a = 1;
myfunc($a);


Ну или присвоение значения переменной происходит внутри условия, которое не выполняется.

Если выкладываете не реальный код, который у вас не работает, а какие-то каракули от балды, то всегда сначала протестируйте, сохраняется ли в этих каракулях ваша проблема
Но лучше всегда выкладывать реальный код.
Ответ написан
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
А вы где в PHP видели тэг <?, ась?
Вот полный тэг <?php - существует. Укороченный <?= - тоже есть.
А <? в PHP откуда?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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