Условные выражения в PHP-коде между HTML Code
У меня проблема с использованием условных выражений в PHP, разделенных HTML-кодом. Это тип кода, который я пытаюсь написать. Это страница профиля, и ее должен видеть только пользователь, чей профиль (я использую переменные сеанса для проверки):
<?php if(check if user is logged in) ?>
<display users profile in html>
<?php else ?>
<display an error>
Но это не работает. Я также попытался использовать сокращенную нотацию, поставив :
в конце if
и используя оператор endif
, но это не сработало. (В более раннем проекте метод :
работал на foreach
и endforeach
, поэтому я решил попробовать его)
Любые идеи?
Ответы
Ответ 1
Вероятно, вы забыли endif
альтернативный синтаксис структуры управления:
<?php if(check if user is logged in): ?>
<display users profile in html>
<?php else: ?>
<display an error>
<?php endif; ?>
Опустить фигурные скобки, как вы писали, невозможно. Это возможно только в том случае, если за ним следует регулярный оператор .
Ответ 2
PHP имеет два стиля обозначения для if() блоков (и блоков в целом).
Во-первых, вы имеете словословную нотацию, в которой явно указывается endif;
в конце блока if(). Это выглядит так:
if(whatever):
do something
else:
do something else
endif;
Длинны в конце строк if
и else
важны, потому что иначе PHP думает, что вы используете другую нотацию (ниже).
Во-вторых, у вас есть фигурная фигурная скобка, которая похожа на код стиля C или Perl и выглядит следующим образом:
if(whatever) {
do something
} else {
do something else.
}
С помощью этой нотации стиля вы можете оставить пары фигурных скобок, если ваш блок будет только длиной в одну строку. (Я лично считаю, что это плохая практика, чтобы оставить их такими, но многие люди клянутся этим, и это вполне допустимый синтаксис. Но я видел, как PHP путают по однострочным блокам, когда вы переключаетесь между PHP-кодом и HTML, поэтому я всегда предпочитаю использовать фигурные скобки, даже если я пишу только одну строку).
Проблема в вашем случае состоит в том, что вы смешали две записи. Вы пробовали нам словосочетание, но у вас нет двоеточий на линиях, поэтому PHP думает, что вы имеете в виду обозначение скобок. Но поскольку в фигурной скобке указано, что фигурные скобки будут упущены, PHP видит ваш код как допустимый синтаксис, даже если он не будет работать так, как вы планировали.
Ваше решение состоит в том, чтобы привести его в порядок, чтобы вы определенно использовали один синтаксис или другой. Либо добавьте фигурные скобки ({
и }
}) к началу и концу каждого блока, как показано в моем примере, или добавьте двоеточия и строку endif;
.
Итак, ваш код должен выглядеть как один из этих двух примеров:
<?php if(check if user is logged in): ?>
<display users profile in html>
<?php else: ?>
<display an error>
<?php endif; ?>
или...
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
Надеюсь, что это поможет.
Ответ 3
используйте фигурные скобки {
и }
.
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
Ответ 4
Попробуйте вставить скобки для разделения условий.
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
Ответ 5
использовать скобки, потому что для интерпретатора php это охватывает несколько строк
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } // else ?>
Ответ 6
Ваша первоначальная мысль была правильной. Есть два способа сделать это, согласно документации PHP:
<?php if($loggedin): ?>
<p>User is logged in.</p>
<?php else: ?>
<p>User is not logged in.</p>
<?php endif; ?>
Или:
<?php if($loggedin){ ?>
<p>User is logged in.</p>
<?php }else{ ?>
<p>User is not logged in.</p>
<?php } ?>