2012-01-16 4 views
-5

Значение для $ i в коде ниже всегда равно 2. Кажется, он увеличивается в первый раз, но только в это время. Есть предположения?PHP только увеличивается один раз

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

... также: Вы приращение '$ i' дважды ... смотреть это. –

ответ

8

Вы переназначение его 1 каждый раз через петлю. Инициализируйте его за пределами цикла.

Также я вижу, что вы увеличиваете как в начале цикла, так и в конце. Я предполагаю, что вы только хотите сделать это один раз (вероятно, сохраните только один в конце, удалите его в начале).

+0

Да. Сегодня я не очень хорошо себя чувствую. – erfling

1

начать это так

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

Конечно. Я слепой. – erfling

1

пожалуйста положите $i = 1; перед тем foreach

2

Ваш код имеет логическую ошибку в том, что он объявляет $ я в каждой итерации цикла.

Это то, что вы делаете:

объявить $ я = 1 в каждой итерации, а затем увеличиваем, что $ я.

поэтому на каждой итерации вы получаете $ i = 2 все время.

объявить $ я = 1 вне цикла Еогеаспа и увеличиваю $ я только один раз, так как:

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

    } 
Смежные вопросы