ホームページ >バックエンド開発 >PHPチュートリアル >このような 2 次元配列を結合し、重複する値を削除するにはどうすればよいでしょうか?
このような 2 次元配列から重複する値をマージして削除する方法
このような 2 次元配列から重複する値をマージして削除します (attr_id、attr_name、attr_value の 3 つのフィールドが同じ場合は、1 つを保持します) 1 つ削除します)
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> Array ( [0] => Array ( [attr_id] => 16950 [attr_name] => 台式机CPU品牌 [attr_value] => AMD ) [1] => Array ( [attr_id] => 16951 [attr_name] => 台式机操作系统 [attr_value] => Linux ) ) Array ( [0] => Array ( [attr_id] => 16955 [attr_name] => 售后服务 [attr_value] => 一年 ) )
<?php $new = 配列 ( '0' => 配列 ( 'attr_id' => '16950', 'attr_name' => 'デスクトップ CPU ブランド', 'attr_value' => 'AMD', 'attr_type' => 1、 '所属' => 'グッズスク' )、 '1' => 配列 ( 'attr_id' => '16951', 'attr_name' => 'デスクトップ オペレーティング システム', 'attr_value' => 'Linux', 'attr_type' => 2、 '所属' => 'グッズスク' )、 '2' => 配列 ( 'attr_id' => '16955', 'attr_name' => 'アフターサービス', 'attr_value' => '1 年', 'attr_type' => 2、 '所属' => 'グッズスク' )、 '3' => 配列 ( 'attr_id' => '16950', 'attr_name' => 'デスクトップ CPU ブランド', 'attr_value' => 'AMD', 'attr_type' => 1、 「所属」 => 「商品」 ) ); // ボスに基づいて変更します 関数 array_multi_unique($ar, $filter=array()) { if(!empty($filter)) { $_v = array_fill_keys($filter, ' '); $_ar = 配列(); foreach($ar as $k => $v) { $_ar[$k] = array_intersect_key($v, $_v); } } それ以外 { $_ar = $ar; } $_ar = array_map('serialize', $_ar); $_ar = array_unique($_ar); $_ar = array_map('unserialize', $_ar); if(!empty($filter)) { return array_intersect_key($ar, $_ar); } それ以外 { $_ar を返します。 } } print_r(array_multi_unique($new, array('attr_id', 'attr_name', 'attr_value')));