phpのarray_unique
は配列の重複を除外しますが、
ある特定のキーを選択し、そのキーが重複していない物だけを取り出し、
除外した物を残さない以下のような配列が作りたいです。
- original
array ( 0 => array ( 'id' => string '1500', 'test_id' => string '12000', 'number' => string '1', 'name' => string 'テスト', ), 1 => array ( 'id' => string '1500', 'test_id' => string '12000', 'number' => string '1', 'name' => string 'テスト', ), 2 => array ( 'id' => string '1501', 'test_id' => string '12000', 'number' => string '2', 'name' => string 'テスト', ), 3 => array ( 'id' => string '1502' 'test_id' => string '12000' 'number' => string '3' 'name' => string 'テスト' ), 4 => array ( 'id' => string '1502' 'test_id' => string '12000' 'number' => string '3' 'name' => string 'テスト' ) );
- 作りたい形(id=1501だけ重複していない)
array ( 0 => array ( 'id' => string '1501', 'test_id' => string '12000', 'number' => string '2', 'name' => string 'テスト', ) );
今以下のような感じロジック組んでいますが、意図した形を得られません。。
ロジックが途中で中途半端な状態で恐縮ですが、ご教授いただけると幸いです。
// id列を昇順に並び替える foreach ($originArr as $key => $value) { $id[$key] = $value['id']; } array_multisort($id, SORT_ASC, $originArr); $tmp = []; $resultArr = []; foreach ($originArr as $key => $val) { if (!in_array($val['id'], $tmp)) { $tmp[] = $val['id']; $resultArr[] = $val; $prevId = $val['id']; } if (!empty($resultArr[$key]['id']) == $prevId) { unset($resultArr[$key]); } }

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/18 15:19