How to change class of first echo result in PHP?
I would suggest you to use a counter.. Not sure if this is the right way to do it..
Change your foreach
as follows
$i=0;foreach($categories as $category) { if($i==0) echo '<li class="selected"><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>'; else echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>'; $i++; }
OR
As suggested in the answer here, you could use array_shift()
to process the first item in the array separatley.
That is, do it as below
$first = array_shift($categories);echo '<li class="selected"><a data-content="' . $first ->slug . '" href="#' . $first ->slug . '">' . $first ->name . '</a></li>';foreach($categories as $category) { echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';}
Read more about array_shift()
in the docs
Lal's solution will work fine (as long as you increment $i
), but here's a simpler way to do it without an extra variable for the counter :
foreach($categories as $index => $category){ if(!$index) echo "This is the first element"; else echo "This is not the first element";}
(not sure if this should be an edit or an answer since it's basically the same method but with a slightly simpler synthax, I'll post as an answer for now)
You can use this syntax for foreach. Using this syntax you have in $k the index of the iteration, while in $v the value of the array you're iterating. So if $k == 0 you're in the first iteration.
$a = array("first", "second", "third", "fourth");foreach ($a as $k=>$v) { echo $k . "--->" . $v ; if($k == 0){ echo "First iteration!"; //Do your stuff } echo "<br>";}