我试图写一个代码,我可以从会话数组中删除变量
这是我的代码
的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");
?>
我的代码的问题是,有时它可以删除变量,有时它不会
由于某些奇怪的原因,它也无法删除数组的第一个变量
我错过了什么吗?提前致谢
答案 0 :(得分:1)
我不会依赖$ x是正确的数组键。你可以尝试一下吗?
<?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
}
?>
每当从temp数组中删除一个键时,依赖$ x作为数组键将导致问题。如果您的临时数组是:
array(
0 => 'foo',
1 => 'bar'
)
并且从数组中删除0,即使数组键0不存在,$ x仍将以0开始。即你正在对数组中当前存在的数组键做出假设。
关于foreach:
foreach($myArray as $arrayKey => $arrayValue){
//$arrayKey is the array key of the element / index
//$arrayValue is the actual element that is stored.
}