array_search()的行为

时间:2015-03-02 14:52:25

标签: php arrays search

我正在使用函数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";  

}

提前谢谢!

0 个答案:

没有答案