2011-06-14 7 views
1

le code original est comme suit:rendre la sortie à impair et même?

<?php 

    foreach($values as $value){ 

     $downlink=node_load($value); 

    echo '<li><input type="checkbox" checked="checked"/>.$downlink->title.'</li>'; 
    } 

?> 

je veux faire la sortie

<li class="odd">...</li> 
<li class="even">...</li> 
..... 

ceci est mes voies. mais ce n'est pas du travail.

$i=0; 
foreach($values as $value){ 

      $downlink=node_load($value); 
      if($i%2==0){ 
echo '<li class="even"><input type="checkbox" checked="checked"/>.$downlink->title.'</li>';} 
else{ 
     echo '<li class="odd"><input type="checkbox" checked="checked"/>.$downlink->title.'</li>'; 
} 
$i++; 
     } 
+3

Pourquoi ça ne marche pas? Quelle est l'erreur que vous voyez. – TJHeuvel

Répondre

0

Votre façon de faire est parfaite mais il y a un petit problème qui pourrait l'empêcher de fonctionner comme prévu. Il semble que vous manquiez un '(guillemet simple) après la balise <li> après "/>" dans vos deux déclarations.

Voici comment il devrait ressembler (notez les guillemets simples; gras):

echo '< classe li = "même" > type d'entrée < = "case" cochée = "cochée"/> ' . $ downlink-> title. « </li > »

Une autre chose mais pas liée - il n'est pas nécessaire de mettre fin/(barre oblique) à la fin du démarrage < balise li > parce qu'il a son propre balise de fin </li >

8

Ma méthode personnelle pour ce faire côté serveur est:

foreach ($foo as $bar) { 

    $class = ($class == "even") ? "odd" : "even"; 

    echo "<li class='".$class."'>blah blah</li>"; 

} 
+0

si la boucle foreach effectue la première. quelle valeur sera affectée à la classe. il n'y a aucune valeur à comparer avec la classe. comment sortir même ou impair? merci – zhuanzhou

+1

Parce qu'avant la première itération de la boucle, $ class n'est pas égal à quoi que ce soit, il sera mis à "impair" (car il n'est pas actuellement égal à "pair"). Vous devriez probablement le pré-configurer, car essayer de comparer $ class quand il n'est pas défini va probablement générer un avis PHP sur votre écran ou sur votre journal, si vous avez activé ce niveau de rapport d'erreurs. – Codecraft

+0

lorsque la deuxième itération de la boucle, la classe $ est également pas égal à quoi que ce soit.how sortie même? Je vous remercie. – zhuanzhou

0

Je pense que vous manquez une citation:

$i=0; 
foreach($values as $value){ 
     $downlink=node_load($value); 
     if($i%2==0){ 
      echo '<li class="even"><input type="checkbox" checked="checked"/>'.$downlink->title.'</li>';} 
else{ 
     echo '<li class="odd"><input type="checkbox" checked="checked"/>.$downlink->title.'</li>'; 
} 
$i++; 
     } 
+0

il manque effectivement des guillemets simples à proximité de 'checked =" coché "/>.$ downlink-> title' – tradyblix

+0

je voulais écrire citation! :) –

1

une autre note:

début de $i=1;

et son début de bizarre

0

Modifier comme ci-dessous:

<?php 
    $i=0; 
    foreach($values as $value){ 
    $downlink=node_load($value); ?> 
    <li class="<?php echo ($i%2==0) ? 'even' :'odd'" ?>> 
    <input type="checkbox" checked="checked"><?php echo $downlink->title;?></li> 
    <?php 
      $i++; 
    }//end of foreach 

Note: pourquoi u mettre checked=checked pour toutes case ?? votre logique peut vous tromper ici

Questions connexes