Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для sasha300
6 / 3 / 0
Регистрация: 12.07.2014
Сообщений: 183

Траблы с разрывом строк в функции if, выдает синтаксическую ошибку

20.07.2016, 23:09. Показов 1356. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!
Есть код:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
<meta charset="utf-8" />
<?php
$shop = "open";
if ("open" == $shop)
?>
<h1>header</h1>
<?
else 
    echo "второе предложение";
?>
При обработке которого браузер выводит ошибку: "Parse error: syntax error, unexpected 'else' (T_ELSE) in /var/www/site/temp.php on line 8"

Тогда как код:
PHP/HTML
1
2
3
4
5
6
7
8
<meta charset="utf-8" />
<?php
$shop = "open";
if ("open" == $shop)
    echo "<h1>header</h1>";
else 
    echo "второе предложение";
?>
отрабатывется без ошибок.

По видеоуроку автор утверждает, что:
HTML5
1
<h1>header</h1>"
и
PHP
1
echo "<h1>header</h1>"
это одно и тоже, но если бы это было так, то и первый код отрабатывался нормально.

Отсюда 2 вопроса:
1. Почему код, приведенный в начале вываливается с ошибкой?
2. Получается, что
HTML5
1
<h1>header</h1>"
и
PHP
1
echo "<h1>header</h1>"
это разные вещи?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.07.2016, 23:09
Ответы с готовыми решениями:

Выдает синтаксическую ошибку
Здравствуйте. Только начал учить PHP. Смотрю видеоуроки. Дошел до 8 урока и при наборе кода выдало ошибку: Database query failedYou have an...

Почему выдает синтаксическую ошибку?
Здравствуйте! Подскажите почему выпадает синтаксическая ошибка с строке где находим q def ex96 (x=2, y=-3): import math ...

Анализатор SQL выдает синтаксическую ошибку
UPDATE Projects SET projName = проба, customer = я, executer = я, manager = 1, start = 01.06.2012, finish = 22.06.2012, priority = 0,...

4
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
20.07.2016, 23:22
Лучший ответ Сообщение было отмечено Kerry_Jr как решение

Решение

Цитата Сообщение от sasha300 Посмотреть сообщение
PHP
1
<? else echo "второе предложение"; ?>
Причиной могут быть короткие тэги (<? ?>). Замените их на нормальные (<?php ?>).

Добавлено через 6 минут
И лучше либо брать тело условия в фигурные скобки
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
<meta charset="utf-8" />
<?php
$shop = "open";
if ("open" == $shop)
{
?>
<h1>header</h1>
<?php
}
else 
    echo "второе предложение";
?>
либо пользоваться альтернативным способом
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
<meta charset="utf-8" />
<?php
$shop = "open";
if ("open" == $shop):
?>
<h1>header</h1>
<?
else:
    echo "второе предложение";
endif;
?>
1
 Аватар для sasha300
6 / 3 / 0
Регистрация: 12.07.2014
Сообщений: 183
20.07.2016, 23:37  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Причиной могут быть короткие тэги (<? ?>). Замените их на нормальные (<?php ?>).
У меня включен short_open_tag, так что короткие теги тут не при чем

Цитата Сообщение от Kerry_Jr Посмотреть сообщение
И лучше либо брать тело условия в фигурные скобки
Если с фигурными скобками, то все работает, надо будет приучиться к этому..
Но скорей всего ошибка происходит из-за того, что после условия "IF" php ожидает обработки true события, а тут код резко переходит в html и возвращается в php, когда уже начинает обрабатываться false. Иными словами отсутстствие true события приводит к ошибке.
Как вывод:
HTML5
1
<h1>header</h1>"
и
PHP
1
echo "<h1>header</h1>"
в некоторых случаях не одно и тоже..
0
25 / 25 / 15
Регистрация: 12.10.2013
Сообщений: 183
21.07.2016, 10:57
PHP
1
2
3
4
5
6
7
8
9
<?php
$shop = "open";
if ("open" == $shop)
?>
<h1>header</h1>
<?
else 
    echo "второе предложение";
?>
Попробуйте заменить на:
PHP/HTML
1
2
3
4
5
6
7
<?php
$shop = "open";
if ("open" == $shop): ?>
<h1>header</h1>
<?php else: ?>
    второе предложение
<? php endif; ?>
1
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
22.07.2016, 17:58
Лучший ответ Сообщение было отмечено sasha300 как решение

Решение

Цитата Сообщение от sasha300 Посмотреть сообщение
Но скорей всего ошибка происходит из-за того, что после условия "IF" php ожидает обработки true события, а тут код резко переходит в html и возвращается в php, когда уже начинает обрабатываться false. Иными словами отсутстствие true события приводит к ошибке.
Чо?
После условия if () вы прерываете выполнение php кода. Далее когда выполнение опять восстанавливается интерпретатор встречает else, хотя ожидает совсем другое. Вот и ошибка unexprcted else.

Всегда пользуйтесь фигурными скобками. Всегда! Код без фигурных скобок читается плохо. Разве что только очень короткие выражения.
А для перемешки с хтмл, имхо, лучше пользоваться альтернативным синтаксисом. В этом случае уже код с фигурными скобки читается плохо (а без них так вообще)...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.07.2016, 17:58
Помогаю со студенческими работами здесь

При выполнении запроса выдает синтаксическую ошибку
при выполнении запроса выдает синтакстическая ошибка посмотрите пожалуйста где ошибка SELECT &quot;Заказчик&quot;.&quot;Наименование...

cn.Execute('INSERT INTO Kassets (N_kassete) VALUES(T1.Value)') Выдает синтаксическую ошибку
Есть поле ввода input type='text' name='T1' Пытаюсь передать значение, введенное в T1 в БД cn.Execute('INSERT INTO Kassets (N_kassete)...

При запуске ASP приложений на локальной машине ИЕ выдает синтаксическую ошибку
При запуске ASP приложений на локальной машине ИЕ выдает синтаксическую ошибку... не могу поеять в чем дело... причем не важно сам писал...

Выдает ошибку в месте копирования строк
Во время копирования строки s2 в s1 выдает ошибку. //Дан текстовый файл. Найти самое короткое слово. #include&lt;iostream&gt; ...

СМА Hansa PG5510A412 s/n 04454930213108 после нескольких минут выдает ошибку, выдает ошибку
Hansa PG5510A412 s/n 04454930213108 отработала 2 месяца на этом же месте, магазин где брали закрылся. После нескольких минут работы на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru