2016-07-13 18 views
0

配列要素が配列で特定の要素がある場合、配列要素を削除する方法はありますか?私はセッションから配列を持っています(私は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"}] 
+0

'使用unset'や' array'を再初期化します。 –

+0

しかし、もし私がunsetを使うと配列から要素を削除するだけです。その要素の1つがif文を満たしていれば、配列を削除したいです – MePo

答えて

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 
     ) 

) 
+0

時々私は本当に愚かです、私はこれについて完全に忘れました。ありがとうございました。 – MePo

0

を取得したいと思い、忘れて呼び出します。

Session::forget('answers'); 

配列の特定の要素を削除する必要がある場合は、get操作とset操作を組み合わせることができます。

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

私は良いことを説明しなかったので、質問を編集しました。私も例を挙げました。私はセッションから削除する方法を知っているが、私はどのようにte1を削除するのかわからないarray1はarray2内の要素によってarray1です。私はこの時間良い説明したいと思っています – MePo

関連する問題