根据数组内的值取消设置特定的会话项

时间:2018-10-10 08:36:31

标签: php arrays session unset

问题:

我有一个由多个数组组成的会话变量,每个数组都有一组值。我希望取消设置与会话数组中特定变量的值匹配的特定数组。

会话构建:

enter image description here

PHP代码:

$key = array_search($answers['evaluationnumber'], $_SESSION['stimuli']);

if ($key !== false) {
  unset($_SESSION['stimuli'][$key]);
  $_SESSION['stimuli'] = array_values($_SESSION['stimuli']);
}

我已经仔细检查过,并且从变量3841得到了值$answers['evaluationnumber']

问题:

如何开始挖掘数组列表以取消设置该特定键?

所需的输出:

能够根据变量stimuli中给出的值删除会话数组$answers['evaluationnumber']中的数组。

2 个答案:

答案 0 :(得分:1)

如果您只想针对$answers['evaluationnumber']检查会话中的特定事件,并且正如您所说的,$_SESSION['stimuli']中子数组只会出现一次,这似乎是最简单的方法。

if ( $_SESSION['stimuli'][0]['evaluationsnumber'] == $answers['evaluationnumber'] ) {
    unset($_SESSION['stimuli'][0]);
}

答案 1 :(得分:0)

您应该查看php的array_filter函数。

它将需要一个数组和一个过滤函数。 此过滤器函数将传递给原始数组的每个元素。在其中检查所需的密钥。

如果在该函数中返回true,则最终数组将包含该元素,如果false,则将其排除。文档中有一个simple example