#loops #if-statement
#циклы #if-statement
Вопрос:
Я хочу вызвать a BEFORE в PHP
мой код до сих пор:
<?php
$folder_path = $cdnurl . 'assets/' . $pid . '/';
// Loop from 2 to 5
for ($i = 2; i <= 6; $i ) {
if(@fopen($folder_path . $i . '/large.jpg',"r")){
?>
<li><a id="<?php echo $i;?>" href="<?php echo $i;?>/large.jpg"><?php echo $i;?></a></li>
<?php } else {
break;
}
}?>
Редактировать
Я отредактировал приведенный выше код, поскольку он уже вложен в IF и ELSE . Я хочу, чтобы это повторилось. что-то вроде
<ul>
<li>2</li>
<li>before</li>
<li>3</li>
<li>4</li>
</ul>
Ответ №1:
Это всего лишь базовая функция if():
for ($i = 2; $i <= 6; $i ) {
if ($i < 3) {
echo "before 3"
} else {
echo "<li> yada yada yada";
}
}
Хотя, поскольку вы начинаете цикл for с 2, это будет выводить «до 3» только один раз, когда i=2. Так что было бы эффективнее сделать:
echo "before 3";
for ($i = 3; .......) {
echo "<li>....";
}
вместо этого и избавьте себя от бесполезной проверки if().
учитывая ваш пример обновления кода:
echo "<ul>";
for ($i = 2; $i <= 6; $i ) {
if ($i == 3) {
echo "<li>before</li>";
}
if (is_readable("{$folder_path}{$i}/large.jpg")) {
echo <<<EOL
<li><a id="{$i}" href="{$i}/large.jpg">{$i}</a></li>
EOL;
}
}
echo "</ul>";
Обратите внимание на использование is_readable()
. Проще проверить наличие / читаемость файла с помощью этого, чем пытаться открыть файл. Также обратите внимание на HEREDOC, используемый для вывода элемента списка, а не обычного echo.
Комментарии:
1. спасибо, я пробовал это, но я прикрепил правильный код выше, поскольку он уже вложен в элементы.
2. спасибо, чувак! Я ценю это. Я всегда хочу знать, что это было (HEREDOC), так что в основном это похоже на выполнение эха со многими строками?
3. в значительной степени. он действует как многострочная строка в двойных кавычках, но без необходимости экранирования кавычек. Также есть «nowdocs», которые являются heredocs, но действуют как строка в одинарных кавычках (поэтому переменные не интерполируются).
Ответ №2:
Вы можете проверить $i
, чтобы узнать, на какой позиции в цикле вы находитесь в данный момент. При первом запуске $i
будет 0, при втором 1 и т. Д. Затем вы можете использовать simple if
-statement, чтобы узнать, находитесь ли вы под управлением # 3. Используя break
вы можете «вырваться» из цикла.
for( $i = 0; $i <= 6; $i ) {
if( $i < 3 ) {
// Code to execute if $i < 3
} else {
// Code to execute if $i >= 3
}
}
Ответ №3:
Выполните проверку, если $i меньше или равно 3:
if ($i <=3){
echo 'before #3';
}
Если я правильно понял ваш вопрос.