0

I have 6 line per page layout, I try to select 5 rows in database return, and in layout I hope it can be insert 1 line ad html structure in random position. How to solve it?

example layout:
| db_array_row 1 | | db_array_row 2 | | db_array_row 3 | | db_array_row 4 | | db_array_row 5 | | ad |
or
| ad | | db_array_row 1 | | db_array_row 2 | | db_array_row 3 | | db_array_row 4 | | db_array_row 5 |

below is what i tried but it will miss one line in db return rows only replace it

<?php 
$row_counter = 0;
$random_ad_index_1 = rand(1, 6);

foreach($db_array as $db_array_row) {
  if ( $row_counter == random_ad_index_1) {
    echo 'ad';
  }

  echo $db_array_row['id'];

  row_counter++;
}
?>
user1775888
  • 3,147
  • 13
  • 45
  • 65

2 Answers2

0

Solution 1

Demo : http://codepad.org/915y4V2y

Output :

0. db_array_row 1 
1. db_array_row 2 
2. db_array_row 3 
3. db_array_row 4 
4. db_array_row 5 
ad 

PHP :

$db_array = Array("db_array_row 1", "db_array_row 2", "db_array_row 3", "db_array_row 4", "db_array_row 5"); 
$row_counter = 0;
$random_ad_index_1 = rand(1, count($db_array));

do {
  if ($row_counter == $random_ad_index_1)
    echo "ad \n";

  if (!isset($db_array[$row_counter])) // last
    break;

  echo "$row_counter. {$db_array[$row_counter]}  \n";

  $row_counter++;
} while ($b = isset($db_array[$row_counter]) || $row_counter == $random_ad_index_1);

Learning

See array_splice function.

<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input is now array("red", "green",
//          "blue", "purple", "yellow");
?>

Similar : How to add an array value to the middle of an associative array?

Community
  • 1
  • 1
user2226755
  • 12,494
  • 5
  • 50
  • 73
-1

Try this:

$ad_index = rand(1, sizeof($rows));

foreach ($rows as $i => $row) {

    echo $row['id'];

    if ($i == $ad_index)
        echo 'ad';

}
Andrés Torres
  • 747
  • 5
  • 16