2014-12-05 3 views
0

Я пытаюсь вернуться в инструкцию foreach, как показано в приведенном ниже примере кода. есть ли способ сделать это?nesting html with php foreach statement

<?php 
    foreach($boxes as $box) 
    { 
     foreach($box as $thing) 
     { 
?> 
     <img src="<?php echo $thing ?>"/> 
<?php 
     } 
    } 
?> 

<!-- more html code here outside of foreach statement that don't want to be loop --> 

// want to go back in to the foreach statement  

<?php echo $thing; ?> 

поэтому выход будет

<img src="1"> 
<img src="2"> 
<img src="3"> 

<div>this only appear once</div> 

<img src="1"><p>1</p> 
<img src="2"><p>2</p> 
<img src="3"><p>3</p> 
+0

Я хочу снова распечатать то же самое в том же порядке. не совсем уверен, что вы подразумеваете под интерполяцией. – aahhaa

+0

Не могли бы вы снова запустить петли? (У вас есть еще один цикл foreach в следующем разделе, который вам нужен?) – Darren

+0

сохранить результат foreach в переменной и напечатать переменную впоследствии в тех местах, где вы хотите? – Prix

ответ

1

I want to print out the same thing in the same order again

По этой логике, можно определить функцию:

function outputBoxes($boxes) { 
    foreach($boxes as $box) { 
     foreach($box as $thing) { // you can make the next two lines valid with ?> 
      <!-- html code here --> 
      <img src="<?php echo $thing ?>"/> 
     <?php } // and now we're back in PHP 
    } 
} 

Затем использовать outputBoxes($boxes) в любое время, когда вы хотите, чтобы цикл foreach произошел снова.

@Prix также приносит правильный аргумент, так как мы хотели, чтобы избежать легкомысленного зацикливания программистов:

function outputBoxes($boxes) { 
    $out = ''; 
    foreach ($boxes as $box) { 
     foreach ($box as $thing) { 
      $out .= '<!-- html code here -->' . 
        '<img src=' . $thing . ' />'; 
     } 
    } 
    return $out; 
} 

Тогда вы можете echo outputBoxes($boxes); или $boxHtml = outputBoxes($boxes); и просто echo $boxHtml; столько, сколько мы хотим. Выбор дилера!

+0

Мне нравится функция идеи спасибо. Я думаю, я просто не думал об этом. – aahhaa

+0

@wlin Приветствия! Убедитесь, что вы принимаете ответ, который, по вашему мнению, наилучшим образом решил ваш вопрос. – sjagr

0

Если вы имеете в виду, что foreach напечатает html-код n раз, просто поместите фигурные скобки под код html. Но у вас есть 2 foreach, поэтому я не знаю, какой из них. Я просто поставлю обе скобки.

<?php 
     foreach($boxes as $box) { 
        foreach($box as $thing) { 
         <!-- html code here --> 
         <img src='<?php echo $thing ?>'/> 
    ?> 

    <!-- more html code here outside of foreach statement that don't want to be loop --> 

    // want to go back in to the foreach statement  

    <?php 
echo $thing; 
        } 
     } 

?> 

Насколько я знаю, каждый HTML код вне

<?php ?> 

тег будет рассматриваться как эхо "HTML код", когда PHP intepreter читает PHP файл.