如何通过在数组(Level 2)中搜索重复值来删除一行数组(Level 1)?
$array = array(
0 => array('name' => 'haha1', 'dateline' => '2014-07-1 00:00:00', 'toid' => '1')
1 => array('name' => 'haha2', 'dateline' => '2014-07-1 00:00:00', 'toid' => '2')
2 => array('name' => 'haha3', 'dateline' => '2014-07-1 00:00:00', 'toid' => '1')
3 => array('name' => 'haha4', 'dateline' => '2014-07-1 00:00:00', 'toid' => '3')
);
删除行$ array [2]由于$ array [2] ['toid']重复到$ array [0] ['toid']。 保留$ array [0]但删除$ array [2]
我在foreach中试过foreach,如下所示,但我认为我以错误的方式使用它们:
$container = array(); //The Container for none duplicated array
foreach($array as $key => $var){
foreach($container as $k => $v){
if(!array_search($var['toid'], $v['toid'])){
$container[] = $var;
}
}
}
另一个问题:记录是从MySQL数据库中获取的,除了数组方式,是否可以在MySQL中获取没有重复的行?
是否可以使用MySQL查询来实现,哪种解决方案更快/更喜欢?
SQL的结构如下:
'id' => auto_increment, int(11)
'name' => varchar(255)
'dateline' => datetime,
'toid' => int(11)
如何通过'dateline'获取所有无重复的'toid'字段行顺序?
答案 0 :(得分:0)
尝试
$data=array();
for($i=0;$i<sizeof($array);$i++){
$tmp=array();
$data = array_unique(array_merge($data,$array[$i]));
}
现在删除了重复的条目。 现在创建一个多维数组
$output=array();
$tmp = &$output;
foreach($data as &$val){
if(strpos($val,'level') !==false ){
if (!is_array($tmp)){
$tmp = array();
}
$tmp = &$tmp[$val];
}else{
$tmp[] = $val;
}
}
echo "<pre>";
print_r($output);
exit();