【问题标题】:Delete Array if it has a element with specific value from session如果 Array 具有会话中具有特定值的元素,则删除 Array
【发布时间】:2016-11-15 15:48:22
【问题描述】:

如果该元素是数组并且它具有特定元素,是否可以/我将如何删除该元素?我有一个来自会话的数组(我使用的是 laravel 4)。

我正在使用它来将它添加到会话中

 Session::push('answers', array('exam_id' => $exam, 'question_id' => $index, 'answer_id' => $answer));

为了得到答案以及我将如何删除它们

$values = Session::get('answers');

 foreach ($values as $index1 => $value) { 
     if ($value['exam_id'] == $examid && $value['question_id'] == $questionid) {

             // Delete Array from session   
      }
    }

例如,如果$value['exam_id'] = 1$value['question_id'] = 2

从这里

"answers":[{"exam_id":"1","question_id":"1","answer_id":"3"},{"exam_id":"1","question_id":"2","answer_id":"6"}] 

我想买

"answers":[{"exam_id":"1","question_id":"1","answer_id":"3"}] 

【问题讨论】:

  • 使用unset或重新初始化array
  • 但如果我使用 unset 它只会从数组中删除元素。如果其中一个元素符合 if 语句,我想删除数组

标签: php arrays session laravel-4


【解决方案1】:

如果您需要删除整个数组本身,请调用忘记。

Session::forget('answers');

如果你需要删除数组的特定元素,我认为你可以结合get和set操作。

$values = Session::get('answers');
//...do something to $values, then
Session:put('answers', $values);

【讨论】:

  • 我已经对问题进行了编辑,因为我没有很好地解释。我也举了一个例子。我知道如何从会话中删除,但我不知道如何通过array1 中的元素删除array2 中的array1。希望我这次解释得很好
【解决方案2】:

如果要从多维数组中删除特定数组,可以使用unset 方法,通过指定要删除的子数组的索引。

$values = Session::get('answers');

foreach ($values as $index => $value) { 
   if ($value['exam_id'] == $examid && $value['question_id'] == $questionid) {
       unset($values[$index]);    
       break;
   }
}

结果是:

Array
(
    [0] => Array
        (
            [exam_id] => 1
            [question_id] => 1
            [answer_id] => 3
        )

)

【讨论】:

  • 有时我真的很愚蠢,我完全忘记了这一点。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 2022-10-09
  • 2018-04-19
  • 1970-01-01
相关资源
最近更新 更多