2015-10-01 31 views
5

Łatwy, ale nie mogę znaleźć odpowiedzi.Jak zmienić klasę pierwszego wyniku echa w PHP?

Chcę wyświetlić podkategorie, aby utworzyć zakładki w kodzie poniżej. Ten działa dobrze w moich wynikach. Ale pierwsza karta wymaga <li class= "selected" >, aby wyświetlić zawartość przy ładowaniu strony.

Jak zmusić pierwszy wynik echa do włączenia klasy na element <li>?

.

.

.

[Wyjście]

Rzeczywiste: .......... Kategoria 1 | Kategoria 2 | Kategoria 3

Potrzebne: .......... Kategoria 1 * | Kategoria 2 | Kategoria 3

* class = "wybrany"

<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> 

.

.

[edycja]

Rozwiązanie autorstwa Lal. Dziękuje wszystkim!

+0

dlaczego chcesz dodać klasę? czy to jest do stosowania stylów? – Lal

+0

Potrzebuję klasy, aby aktywować jeden skrypt. Używam tego systemu kodu. http://codyhouse.co/gem/responsive-tabbed-navigation/ – rdllngr

Odpowiedz

3

Proponuję użyć licznika .. Nie wiem, czy to jest właściwy sposób to zrobić ..

zmienić foreach następująco

$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++; 
    } 

LUB

Jak zasugerowano w odpowiedzi na pytanie here, można użyć użyć array_shift(), aby przetworzyć pierwszy element w tablicy separatley.

Oznacza to, zrób to jak poniżej

$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>'; 
} 

Przeczytaj więcej o array_shift() w docs

+0

Prawie! Potrzebuję tylko wartości (++ $ i == 1) zamiast 0 do pracy! Podałem ostateczny kod, o którym mowa. Prosty i czysty. Dziękuję bardzo, stary! – rdllngr

+0

Świetne .. :) Cieszę się, że pomogło ... – Lal

+2

@Lal Nie dodajesz '$ i' w swoim pierwszym przykładzie, więc' $ i == 0' zawsze będzie prawdziwe. – Drown

-1

Możesz użyć tej składni dla foreach. Używając tej składni, masz w $ k indeks iteracji, aw $ v wartość iteracji tablicy. Więc jeśli $ k == 0 jesteś w pierwszej iteracji.

+0

Właśnie robi to – RiggsFolly

+0

To nie odpowiada na pytanie. – rnevius

+0

Dlaczego nie odpowiada? Jeśli użyje tej składni, może sprawdzić wartość zmiennej $ key. Jeśli jest 0, to jest w pierwszej iteracji, więc może dodać klasę do html. – gmast

1

rozwiązanie Lal będzie działać dobrze (tak długo, jak zwiększyć $i), ale tu jest prostszy sposób to zrobić to bez dodatkowej zmiennej dla licznika:

foreach($categories as $index => $category){ 
    if(!$index) echo "This is the first element"; 
    else echo "This is not the first element"; 
} 

(nie jestem pewien, czy to powinna być zmiana, czy odpowiedź, ponieważ jest to w zasadzie t ta sama metoda, ale z nieco prostszą syntaktą, na razie odpowiem jako odpowiedź)