Easy one, but I can’t find an answer.
I wanna to list sub-categories to create tabs in code below. This one works fine in my output. But the first tab needs a <li class= "selected" >
to show the content on page load .
How to force the first echo result to include a class on <li>
element ?
.
.
.
[ Output ]
Actual: ………. Category 1 | Category 2 | Category 3
Needed: ………. Category 1* | Category 2 | Category 3
*class=”selected”
<ul class="cd-tabs-navigation">
<?php
$argumentos = array(
'hide_empty' => 1,
'child_of' => 44,
);
$categories = get_categories($argumentos);
foreach($categories as $category) {
echo '<li><a data-content="' . $category->slug . '" href="#' . $category->slug . '">' . $category->name . '</a></li>';
}
?>
</ul>
.
.
[ EDIT ]
The solution by Lal. Thank you everyone!
foreach($categories as $category) {
if(++$i==1)
echo '<li class="selected"><a class="selected" 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 would suggest you to use a counter.. Not sure if this is the right way to do it..
Change your
foreach
as followsOR
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
Read more about
array_shift()
in the docsLal’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 :(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.