環境
Laravel 6.2
PHP 7.2.14
困っていること
セッション内に作った多次元連想配列でunset()が動作せず困っています。
なぜunsetが動作しないのか、また、その他実現方法ありましたら、教えていただきたいです。
対象の配列
構造(実際に動くコードではありませんが、このような形です)
session(['human_data' => [ '山田太郎' => [ 'firstName' => '山田', 'lastName' => '太郎', 'firstNameKana' => 'ヤマダ', 'lastNameKana' => 'タロウ', 'tall' => '168', 'foot' => '26.5', 'age' => '24', ], '山田花子' => [ 'firstName' => '山田', 'lastName' => '花子', 'firstNameKana' => 'ヤマダ', 'lastNameKana' => 'ハナコ', 'tall' => '160', 'foot' => '24.5', 'age' => '20', ], '田中次郎' => [ 'firstName' => '田中', 'lastName' => '次郎', 'firstNameKana' => 'タナカ', 'lastNameKana' => 'ジロウ', 'tall' => '180', 'foot' => '28', 'age' => '19', ] ]]);
求める最終的な形
"山田太郎"や"山田花子"を指定して、そのキーと配下の要素をすべて消したいです。
php
1dd(session('human_data')[$delete_key]); 2// 3//OUTPUT 4// 5//array:4 [▼ 6// "山田太郎" => array:7 [▶] 7// "田中次郎" => array:7 [▶] 8//]
試したこと
削除をしようと記述したコード
php
1$delete_key = (key(array_slice(session('human_data'),1,1,true))); 2// $delete_keyの中には'山田花子'が返ってきています。 3unset(session('human_data')[$delete_key]);
自分の考え
php
1dd(session('human_data')[$delete_key]); 2// 3//OUTPUT 4// 5//array:7 [▼ 6// "firstName" => "山田" 7// "lastName" => "花子" 8// "firstNameKana" => "ヤマダ" 9// "lastNameKana" => "ハナコ" 10// "tall" => "160" 11// "foot" => "24.5" 12// "stance" => "20" 13//]
と返ってきているので削除したい部分はずれなく指定できているかと思います。
連想配列で子要素を持っているものは削除できないのかとも考えています。
最後に
正しい言葉をつかえているかも怪しいですが、ご教授いただけると幸いです。