Frage Wie kann man die Klasse des ersten Echo-Ergebnisses in PHP ändern?


Einfach, aber ich kann keine Antwort finden.

Ich möchte Unterkategorien auflisten, um Tabs im folgenden Code zu erstellen. Dieser funktioniert in meiner Ausgabe einwandfrei. Aber die erste Registerkarte benötigt eine <li class= "selected" > um den Inhalt beim Laden der Seite anzuzeigen.

Wie erzwinge ich, dass das erste Echoergebnis eine Klasse enthält <li> Element ?

.

.

.

[ Ausgabe ]

Ist: .......... Kategorie 1 | Kategorie 2 | Kategorie 3

Benötigt: .......... Kategorie 1 * | Kategorie 2 | Kategorie 3

* class = "ausgewählt"

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

.

.

[Bearbeiten]

Die Lösung von Lal. Danke euch allen!

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

5
2017-10-01 18:02


Ursprung


Antworten:


Ich würde vorschlagen, dass Sie einen Zähler verwenden .. Nicht sicher, ob dies der richtige Weg ist, es zu tun ..

Ändere dein foreach wie folgt

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

ODER

Wie in der Antwort vorgeschlagen Hier, du könntest benutzen array_shift() um das erste Element im Array separat zu verarbeiten.

Das heißt, mach es wie unten

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

Lesen Sie mehr über array_shift() in dem Dokumente


3
2017-10-01 18:11



Lals Lösung wird gut funktionieren (solange Sie erhöhen $i), aber hier ist eine einfachere Möglichkeit, es ohne eine zusätzliche Variable für den Zähler zu tun:

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

(Ich bin mir nicht sicher, ob das eine Bearbeitung oder eine Antwort sein sollte, da es im Grunde die gleiche Methode ist, aber mit einer etwas einfacheren Synthax, die ich als Antwort für jetzt posten werde)


1
2017-10-01 19:11



Sie können diese Syntax für foreach verwenden. Mit dieser Syntax haben Sie in $ k den Index der Iteration, während in $ v der Wert des Arrays, das Sie iterieren. Wenn also $ k == 0, bist du in der ersten 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>";
}

-1
2017-10-01 18:10