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

foreach から unset を呼び出すため

試す :

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 に答える