foreach( $tabs2 as $tab2 => $name ){
$class = ( $tab2 == $current ) ? ' current' : '';
echo("<li class='posts'><a href='?page=pigg&tab=help&tab2=$tab2' class='$class'>$name");
echo(' |'); // If array last then do not display
echo('</a></li>');
}
J'utilise une boucle foreach pour créer la navigation d'un plugin WordPress sur lequel je travaille, mais je ne veux pas de '|' Pour être affiché pour le dernier élément, le code ci-dessus est ce que j’ai eu jusqu’à présent. Je pensais utiliser une déclaration if sur la ligne commentée, mais je ne savais pas quelle serait la meilleure approche, des idées? Merci!
La fonction end()
est ce dont vous avez besoin:
if(end($tabs2) !== $name){
echo ' |'; // not the last element
}
La première chose que vous devez savoir quelle est la clé last du tableau est de rechercher la longueur du tableau à l’aide de la fonction count ().
Après nous allons créer un compteur et ajouter +1 à chaque boucle.
Si le compteur et la dernière clé sont égaux, c’est la dernière clé.
$ last = count ($ array); $ compteur = 1; foreach ($ array comme $ key => $ val) { if ($ counter! = $ last) { // toutes les clés sauf la dernière // faire quelque chose $ counter ++; // ajoute un pour contrer le compte } autre { // c'est pour la dernière clé } // end else } // end foreach
end () est une bonne fonction à utiliser
foreach( $tabs2 as $tab2 => $name ){
if(end($tabs2)== $name)
echo "|";
}
ou vous pouvez le faire manuellement pour plus de compréhension
$copyofarry = $tabs2;
$last = array_pop($copyofarry);
foreach( $tabs2 as $tab2 => $name ){
if($last == $name)
echo "|";
}
Je ferais comme ça:
$arrLi = array();
foreach( $tabs2 as $tab2 => $name ){
$class = ( $tab2 == $current ) ? ' current' : '';
$arrLi[] = "<li class='posts'><a href='?page=pigg&tab=help&tab2=$tab2' class='$class'>$name</a></li>";
}
echo implode('|', $arrLi);
Je trouve qu'il est plus facile de vérifier d'abord, plutôt que le dernier. Donc, je le ferais plutôt comme ça.
$first = true;
foreach( $tabs2 as $tab2 => $name ){
if ($first) {
$first = false;
} else {
echo(' | ');
}
$class = ( $tab2 == $current ) ? ' current' : '';
echo("<li class='posts'><a href='?page=pigg&tab=help&tab2=$tab2' class='$class'>$name</a></li>");
}
J'ai également combiné les deux derniers echos
ensemble.
Pourquoi ne pas faire apparaître le dernier élément en premier? Vous n'avez donc pas besoin de vérifier si l'élément en cours est le dernier élément de chaque itération.
La fonction array_pop (& $ array) renvoie le dernier élément et le supprime du tableau.
<div id="breadcrumb">
<?php
$lastBreadcrumb = array_pop($breadcrumb);
foreach ($breadcrumb as $crumb){ ?>
<a href=""><?php echo $crumb; ?></a>
<?php } ?><span><?php echo $lastBreadcrumb?></span>
</div>
Quelque chose comme cela est possible:
$size = count($tabs2);
$counter = 0;
foreach( $tabs2 as $tab2 => $name ){
$class = ( $tab2 == $current ) ? ' current' : '';
echo("<li class='posts'><a href='?page=pigg&tab=help&tab2=$tab2' class='$class'>$name");
if ( ++$counter < $size ){
echo(' |'); // If array last then do not display
}
echo('</a></li>');
}