如何进行一次循环,然后继续循环?

时间:2016-01-16 02:50:53

标签: php loops for-loop while-loop

我使用float:left水平循环div并且它按照它应该的方式工作但问题是每个div都有一个独特的高度受到其中包含的内容的影响,因此当浏览器是时,结果可能会很混乱重新调整大小我想让php循环一次,中断,然后开始一个新的行,这样无论浏览器的大小如何,它都看起来都一样。

如果它不是很明显,我对PHP并不擅长拼凑我所拥有的东西。

<?php
$url = "XML.php";
$xml = simplexml_load_file($url);
$namespaces = $xml->getNamespaces(true); // get namespaces
for($i = 0; $i < 10; $i++){

    $poster = $xml->channel->item[$i]->children($namespaces['x'])->poster;
    $html .= "<div class='wrapper' style='float:left;'>$poster</div>";}

echo $html;
?>

1 个答案:

答案 0 :(得分:0)

如果我理解你想要的信息,我在这里的信息就是我的建议:

你的循环很好。因此,假设您希望它看起来与页面大小相同。例如:你想要每行5个div。你可以用css来做。

你总共有10个div,所以你需要2行。

将此添加到您的循环中:

if($i = 5){
$html .= "<div class='wrapper' style='float:left;clear:right;'>$poster</div>";}
}
else{
$html .= "<div class='wrapper' style='float:left'>$poster</div>";}
}

这是非常基本的,clear:right; CSS语句将阻止任何其他div转到第五个div的右侧,因此它将开始一个新行;

您也应该将display:inline-block;添加到您的CSS中。

如果这不按您想要的方式工作,另一个选项是将div中的每一行设置为具有相同类型的if条件

为例:

html.= '<div class="row">'; // start the row here
 if($i = 5){
 // You might want to use another increment to keep track of the row
 //  because in this case you would only make 2 rows.
    $html .= '</div><div class="row">'; // end the first row and start a new one
    }
    else{
    // we do nothing
    }
html.= '</div>'; //end the row here

你可能想要使用第二个增量,它会跳过5,所以你可以使用一些垫子来制作类似的东西

之后你只需要调整CSS行类。