2012-01-16 6 views
-5

La valeur de $ i dans le code ci-dessous est toujours 2. Il semble qu'elle augmente à la première fois, mais seulement cette fois. Des pensées?PHP incrémente seulement une fois

foreach ($records as $row){ 

    $i = 1; 
    $i++ 

    if ($i % 2 != 0){ 
     $trClass = 'odd';    
    }else{ 
     $trClass = 'even'; 
    } 

    echo '<tr class="' . $trClass . '"><td>' . 
     anchor("admin/delete/$row->id", 'delete') . '</td><td>' . 
     anchor("admin/edit/$row->id", 'Edit') . '</td>'; 

    foreach ($row as $key => $value){ 
     echo '<td>' . $value . '</td>'; 
    } 

    echo '</tr>'; 
    $i++; 
} 
+1

... aussi: Vous incrémenter 'I' $ deux fois ... regarder ça. –

Répondre

8

Vous réassignez à 1 chaque fois dans la boucle. Initialisez-le en dehors de la boucle à la place.

$i = 1; 
foreach ($records as $row){ 
    /* 
    ... 
    */ 

    $i++; 
} 

Aussi, je vois que vous incrémentez à la fois au début de la boucle et à la fin. Je suppose que vous voulez seulement le faire une fois (probablement garder seulement celui à la fin, enlever celui au début).

+0

Oui. Je n'utilise pas très bien mes yeux aujourd'hui. – erfling

1

commencer cette façon

$i = 1; 
foreach ($records as $row){ 
    $i++; 
    ... 
+0

Bien sûr. Je suis aveugle. – erfling

1

s'il vous plaît mettre $i = 1; avant foreach

2

Votre code a une erreur logique en ce qu'elle déclare i $ à chaque itération de la boucle.

C'est ce que vous faites:

$ i = déclarer 1 à chaque itération puis incrément $ i.

donc à chaque itération, vous obtenez $ i = 2 tout le temps.

$ i = déclarer 1 en dehors de la boucle foreach et l'incrément i $ juste une fois comme ceci:

$i = 1; 
foreach ($records as $row){ 

     if ($i % 2 != 0){ 
      $trClass = 'odd';    
     }else{ 
      $trClass = 'even'; 
     } 

     echo '<tr class="' . $trClass . '"><td>' . anchor("admin/delete/$row->id", 'delete') . '</td> 
      <td>' . anchor("admin/edit/$row->id", 'Edit') . '</td>'; 

       foreach ($row as $key => $value){ 
        echo '<td>' . $value . '</td>'; 
       } 
     echo '</tr>'; 
     $i++; 

    } 
Questions connexes