PHP перед выполнением инструкции If

#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';
}
  

Если я правильно понял ваш вопрос.