我正在使用函数array_search来取消设置会话数组中的元素。问题:如果找到的键是0,则返回false;如果从“列表”中选择了最后一个元素,它不会从浏览器的页面中删除它,但它会从数组中删除(与其他元素一起正常工作);如果我打印出$ key它没有显示正确的键,而是每次结果都是已经“使用”的键时不断增长的值。 第一和第二个问题是我最感兴趣的。从数组中取消设置元素的代码对我来说似乎是正确的和逻辑的,所以我再次需要帮助...
所以我设置了一个从DB表中检索数据的分页。一切都打印得很好。
while($row=mysqli_fetch_assoc($query))
{
echo "<tr><td>".$row['ID']."</td><td>".$row['name']."</td><td>";
if($row['stoc']==0) echo "Stoc 0</td></tr>";
else echo "<a href=\"mousi.php?item=".$row['cod']."\">Add this</a></td></tr>";
}
然后,如果是isset(GET ['item'])(“添加此”按钮),构建一个会话数组并逐个添加所选项:
if(isset($_GET['item']))
{
$cod=$_GET['item'];
$item_q=mysqli_query($conn, "SELECT name FROM mousi WHERE cod='$cod'");
$item_f=mysqli_fetch_assoc($item_q);
if(!in_array($item_f['name'],$_SESSION['prod'])) $_SESSION['prod'][]=$item_f['name'];
foreach($_SESSION['produse'] as $elm)
echo $elm."<a href='mousi.php?item=$cod&del=$elm'>Delete</a><br />";
}
最后如果isset(GET [item])之前有一个if isset(GET ['del'])条件,并且这个GET [del]从数组$ _SESSION ['prod']中取消了一个元素:< / p>
if(isset($_GET['del']))
{
$key=array_search($_GET['del'], $_SESSION['prod']);
if($key!==false)
{
unset($_SESSION['prod'][$key]);
echo $key." 'selected' key<br />"; //why would this grow like the last result is stored?
print_r(array_values($_SESSION['prod'])); //just to see if the elements are actually deleted and they are, except the first one (key=0)
}
else echo "Key not found";
}
提前谢谢!