olo
olo

Reputation: 5271

foreach first element add a class

image folder has 3 files

<img src='images/AAA_1.jpg'>
<img src='images/AAA_2.jpg'>
<img src='images/AAA_3.jpg'>
<img src='images/BBB_1.jpg'>
<img src='images/BBB_2.jpg'>
<img src='images/BBB_3.jpg'>
<img src='images/CCC_3.jpg'>

PHP is

    foreach ($carousel as $image) {
        if(strpos($image, 'AAA_') === 0){
          echo "<div class='box'><img src='images/carousel/$image'/></div>";
       }
    }

so the output is

<div class='box'>
   <img src='images/AAA_1.jpg'>
</div>
<div class='box'>
   <img src='images/AAA_2.jpg'>
</div>
<div class='box'>
   <img src='images/AAA_3.jpg'>
</div>

How can I add a first class on the fist box, looks like

<div class='box first'>
   <img src='images/AAA_1.jpg'>
</div>
<div class='box'>
   <img src='images/AAA_2.jpg'>
</div>
<div class='box'>
   <img src='images/AAA_3.jpg'>
</div>

Upvotes: 1

Views: 128

Answers (3)

LevChurakov
LevChurakov

Reputation: 113

You can use a boolean flag, or add count param to foreach:

foreach ($carousel as $i => $image)

Upvotes: 0

Samuel Cook
Samuel Cook

Reputation: 16828

Use the key:

foreach ($carousel as $key=>$image) {
    $first = $key == 0 ? ' first' : '';
    if(strpos($image,'AAA_') === 0){

        echo <<<EOD

        <div class='box{$first}'>
           <img src='images/carousel/{$image}.jpg'>
        </div>

EOD;

    }
}

Note: I used a heredoc statement for the echo as I prefer to echo multiple tags of HTML over multiple lines.

Upvotes: 2

kero
kero

Reputation: 10658

Simple: Use a flag.

$firstEchoed = FALSE;
foreach ($carousel as $image) {
    if(strpos($image,'AAA_') === 0){
      echo "<div class='box";
      if ( ! $firstEchoed)
        echo " first";

      echo "'><img src='images/carousel/$image'/></div>";
      $firstEchoed = TRUE;
   }
}

Upvotes: 1

Related Questions