2012-11-28 8 views
0

им пытаются написал код, в котором я могу удалить переменные из сессионного массиваудаление переменных массива сеанса из цикла Еогеасп

вот мой код

index.php

<?php 
     if(isset($_POST['add'])) 
      { 
      $_SESSION['temp'][]=$_POST['rfield']; 
      $_SESSION['scol_id'][]=$_POST['scol_id']; 

      } 
     if(isset($_SESSION['temp'])) 
     { 
      ?> 
      <table width="100%" border="0" class = "table"> 
      <?php 
      $x=0; 
      foreach($_SESSION['temp'] as $temp) 
      { 
       ?> 
     <tr><td> 
     <?php echo $temp; ?> 
     </td> 
     <td><a href="removerf.php?id=<?php echo $x; ?>" rel="tooltip" title="remove" class="link"><i class="icon-remove"></i></a></td> 
     </tr> 
     <?php 
      $x++; 
      } 
     ?> 
     </table> 
     <?php 
     } 
     ?>       

removerf. php

<?php 
    session_start(); 

    unset($_SESSION['temp'][$_GET['id']]); 

    header("location:reportmaker.php"); 

    ?> 

проблема с моим кодом заключается в том, что иногда он может удалять переменные и иногда DonT

это также не может удалить первые переменный массив по какой-то странной причине

я упускаю что-то?

заранее спасибо

ответ

1

я бы не полагаться на $ х является правильным ключом массива. Не могли бы вы попробовать это?

<?php 
if(isset($_POST['add'])) 
{ 
    $_SESSION['temp'][]=$_POST['rfield']; 
    $_SESSION['scol_id'][]=$_POST['scol_id']; 
} 
if(isset($_SESSION['temp'])) 
{ 
    ?> 
    <table width="100%" border="0" class = "table"> 
    <?php 
    foreach($_SESSION['temp'] as $key => $temp) 
    { 
    ?> 
     <tr><td> 
     <?php echo $temp; ?> 
     </td> 
     <td><a href="removerf.php?id=<?php echo $key; ?>" rel="tooltip" title="remove" class="link"><i class="icon-remove"></i></a></td> 
     </tr> 
    <?php 
    } 
?> 
</table> 
<?php 
} 
?> 

Опираясь на $ x, чтобы быть массивом, будет возникать проблема при удалении ключа из массива temp. Если массив температуры является:

array(
    0 => 'foo', 
    1 => 'bar' 
) 

и удалить 0 из массива, $ х будет по-прежнему начинаются как 0, даже если ключ массива 0 не существует. т. е. вы делаете предположения о ключах массива, которые в настоящее время существуют в вашем массиве.

В отношении к каждому элементу:

foreach($myArray as $arrayKey => $arrayValue){ 
    //$arrayKey is the array key of the element/index 
    //$arrayValue is the actual element that is stored. 
} 
+0

благодарит его, наконец, работает , но что же $ ключ => $ Темп делать? – itsover9000

+0

@ itsover9000 Я добавил небольшое объяснение в свой ответ. –

+0

'foreach ($ arr as $ value)' помещает текущий элемент каждой итерации в значение $, 'foreach ($ arr as $ key => $ value)' также помещает текущий ключ в $ key. см. http://docs.php.net/foreach – VolkerK

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