Я хотел повторить изображение каждый после 3-х сообщений через XML, вот мой код:
<?php // URL of the XML feed. $feed = 'test.xml'; // How many items do we want to display? //$display = 3; // Check our XML file exists if(!file_exists($feed)) { die('The XML file could not be found!'); } // First, open the XML file. $xml = simplexml_load_file($feed); // Set the counter for counting how many items we've displayed. $counter = 0; // Start the loop to display each item. foreach($xml->post as $post) { echo ' <div style="float:left; width: 180px; margin-top:20px; margin-bottom:10px;"> image file</a> <div class="design-sample-txt">'. $post->author.'</div></div> '; // Increase the counter by one. $counter++; // Check to display all the items we want to. if($counter >= 3) { echo 'image file'; } //if($counter == $display) { // Yes. End the loop. // break; //} // No. Continue. } ?>
вот пример первых 3 правильный, но теперь он не зацикливается idgc.ca/web-design-samples-testing.php
Самый простой способ – использовать оператор деления модуля.
if ($counter % 3 == 0) { echo 'image file'; }
Как это работает: подразделение по модулю возвращает остаток. Остальное всегда равно 0, когда вы находитесь на четном краю.
Существует один улов: 0 % 3
равно 0. Это может привести к неожиданным результатам, если ваш счетчик начинается с 0.
Отправляясь от ответа @ Powerlord,
«Существует один улов: 0% 3 равно 0. Это может привести к неожиданным результатам, если ваш счетчик начинается с 0."
Вы все равно можете запустить свой счетчик на 0 (массивы, запросы), но смещать его
if (($counter + 1) % 3 == 0) { echo 'image file'; }
Используйте modulo арифметическую операцию, найденную здесь, в руководстве по PHP.
например
$x = 3; for($i=0; $i<10; $i++) { if($i % $x == 0) { // display image } }
Для более детального понимания расчетов по модулю щелкните здесь .
каждые 3 сообщения?
if($counter % 3 == 0){ echo IMAGE; }
Как насчет: if (($ counter% $ display) == 0)
Я использую это обновление статуса, чтобы показать символ «+» каждые 1000 итераций, и, похоже, он работает хорошо.
if ($ucounter % 1000 == 0) { echo '+'; }
Вы также можете сделать это без модуля. Просто сбрасывайте счетчик, когда он совпадает.
if($counter == 2) { // matches every 3 iterations echo 'image-file'; $counter = 0; }