如何根据一列或多列过滤数组以提供唯一元素。示例:
array(
array('name'=>'toto', 'type'=>'1', 'type2'=> '2')
array('name'=>'tata', 'type'=>'1', 'type2'=> '3')
array('name'=>'titi', 'type'=>'1', 'type2'=> '2')
array('name'=>'tutu', 'type'=>'2', 'type2'=> '4')
array('name'=>'tete', 'type'=>'3', 'type2'=> '2')
)
如果我们选择 type 和 type2 作为唯一列。算法的结果应该给
array(
array('name'=>'toto', 'type'=>'1', 'type2'=> '2')
array('name'=>'tata', 'type'=>'1', 'type2'=> '3')
array('name'=>'tutu', 'type'=>'2', 'type2'=> '4')
array('name'=>'tete', 'type'=>'3', 'type2'=> '2')
)
我可以想到一种算法,通过散列类型与 type2 连接,存储在表中并使用 isset 来查找存在。但我不确定这是最好的算法。
最佳答案
你只需要
$data = array(
array('name'=>'toto', 'type'=>'1', 'type2'=> '2'),
array('name'=>'tata', 'type'=>'1', 'type2'=> '3'),
array('name'=>'titi', 'type'=>'1', 'type2'=> '2'),
array('name'=>'tutu', 'type'=>'2', 'type2'=> '4'),
array('name'=>'tete', 'type'=>'3', 'type2'=> '2')
);
$tmp = array();
foreach($data as $v) {
$id = $v['type'] . "|" . $v['type2'];
isset($tmp[$id]) or $tmp[$id] = $v;
}
print_r(array_values($tmp));
关于按列唯一的 PHP 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16419414/