0

我在删除数组元素时遇到问题。看:

<?php
session_start();
$i = 0;
$expected = $_GET['name'];
foreach($_SESSION['chart'] as $name)
{
     if($name==$expected)
     {
         break;
     }
     $i++;
}
unset($_SESSION['chart'][$i]);

echo count($_SESSION['chart'])." ".$expected." ".$i;
//echo "<script>history.go(-1);</script>";
?>

我得到这个输出:3 name 2。

我知道数组中的元素名称为“name”,但我无法取消设置它。请帮我。

4

3 回答 3

4

为什么不让 PHP 进行搜索?

<?php
session_start();
$key = array_search($_GET['name'], $_SESSION['chart']);
if ($key !== false) {
   unset($_SESSION['chart'][$key]);
}
于 2012-02-25T10:44:35.820 回答
1

因为你叫 unset 出 foreach

尝试 :

foreach($_SESSION['chart'] as $name)
{
if($name==$expected)
{
    unset($name);
}
$i++;
}
于 2012-02-25T10:39:30.457 回答
1

您可以使用这种形式的 foreach 使您的意图更清晰

foreach($_SESSION['chart'] as $idx=>$name)
{
     if($name==$expected)
     {
         unset($_SESSION['chart'][$idx]);
         break;
     }
}

然而,Till Helge Helwig 的解决方案更适合这个特定问题,但值得注意的是,在使用 foreach 时不需要维护自己的“键”变量。

于 2012-02-25T10:47:24.633 回答