элемент - unset php




Как удалить переменную из массива сеансов PHP (4)

У меня есть PHP-код, который используется для добавления переменных в сеанс:

<?php
    session_start();
    if(isset($_GET['name']))
    {
        $name = isset($_SESSION['name']) ? $_SESSION['name'] : array();
        $name[] = $_GET['name'];
        $_SESSION['name'] = $name;
    }
    if (isset($_POST['remove']))
    {
        unset($_SESSION['name']);
    }
?>
<pre>  <?php print_r($_SESSION); ?>  </pre>

<form name="input" action="index.php?name=<?php echo $list ?>" method="post">
  <input type="submit" name ="add"value="Add" />
</form>

<form name="input" action="index.php?name=<?php echo $list2 ?>" method="post">
  <input type="submit" name="remove" value="Remove" />
</form>

Я хочу удалить переменную, которая отображается в $list2 из массива сеансов, когда пользователь выбирает «Удалить».

Но когда я отключаюсь, ВСЕ переменные в массиве удаляются.

Как я могу удалить только одну переменную?


Попробуй это:

if(FALSE !== ($key = array_search($_GET['name'],$_SESSION['name'])))
{
    unset($_SESSION['name'][$key]);
}

Чтобы удалить определенную переменную из сеанса, используйте:

session_unregister('variableName');

( см. документацию ) или

unset($_SESSION['variableName']);

ПРИМЕЧАНИЕ. session_unregister() был DEPRECATED с PHP 5.3.0 и удалены с PHP 5.4.0.


В настоящее время вы очищаете массив имен, вам нужно вызвать массив, а затем индекс, который вы хотите отключить в массиве:

$ar[0]==2
$ar[1]==7
$ar[2]==9

unset ($ar[2])

Два способа сброса значений внутри массива:

<?php
# remove by key:
function array_remove_key ()
{
  $args  = func_get_args();
  return array_diff_key($args[0],array_flip(array_slice($args,1)));
}
# remove by value:
function array_remove_value ()
{
  $args = func_get_args();
  return array_diff($args[0],array_slice($args,1));
}

$fruit_inventory = array(
  'apples' => 52,
  'bananas' => 78,
  'peaches' => 'out of season',
  'pears' => 'out of season',
  'oranges' => 'no longer sold',
  'carrots' => 15,
  'beets' => 15,
);

echo "<pre>Original Array:\n",
     print_r($fruit_inventory,TRUE),
     '</pre>';

# For example, beets and carrots are not fruits...
$fruit_inventory = array_remove_key($fruit_inventory,
                                    "beets",
                                    "carrots");
echo "<pre>Array after key removal:\n",
     print_r($fruit_inventory,TRUE),
     '</pre>';

# Let's also remove 'out of season' and 'no longer sold' fruit...
$fruit_inventory = array_remove_value($fruit_inventory,
                                      "out of season",
                                      "no longer sold");
echo "<pre>Array after value removal:\n",
     print_r($fruit_inventory,TRUE),
     '</pre>';
?> 

Таким образом, unset не влияет на счетчик внутренних массивов !!!

http://us.php.net/unset


Если вы хотите удалить или удалить все $ _SESSION, попробуйте это

session_destroy();

Если вы хотите удалить конкретную $ _SESSION ['name'], попробуйте это

session_unset('name');




session