###実現したいこと
下記$arr
から、s_id
が1
で、a_id
が777
の要素を削除したいです。
(正確に言いますと、削除したい値は関数del()
の引数で指定します。)
###該当のソースコード
$arr = [ 'up'=>[ [ 's_id'=>1, 'a_id'=>777, 'date'=>2019 ], // 削除したい [ 's_id'=>2, 'a_id'=>777, 'date'=>2019 ], [ 's_id'=>1, 'a_id'=>111, 'date'=>2019 ], [ 's_id'=>3, 'a_id'=>777, 'date'=>2019 ], ], 'down'=>[ [ 's_id' =>1, 'a_id'=>333, 'date'=>2019 ] ] ];
###試したこと
まず普通にループとifで試しましたが、unset
をどう指定するのかで行き詰りました。下記です。
function del( $arr, $action, $s_id, $a_id ){ foreach( $arr[$action] as $val ){ if( $val['s_id']==$s_id && $val['a_id']==$a_id ){ unset( ); // どう指定すれば…? } } return $arr; }
続いてarray_search
を使ってみたのですが、s_id
とa_id
という複数の値について指定する方法がいまいちわからず、こちらも行き詰っています。
function del( $arr, $action, $s_id, $a_id ){ if(($key = array_search($s_id, $arr[$action])) !== false) { if(($key = array_search($a_id, $arr[$action])) !== false) { unset($arr[$key]); } } return $arr; }
いずれかの方法について修正方法を、またはいずれも見当外れでしたら正しい方法を教えて頂けましたら幸いです。
宜しくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/24 12:42 編集
退会済みユーザー
2019/09/24 17:10
退会済みユーザー
2019/09/24 17:13