$array = array(
array(
'id' => 1,
'name' => 'a',
'words' => '你好',
),
array(
'id' => 2,
'name' => 'b',
'words' => '你是谁',
),
array(
'id' => 1,
'name' => 'a',
'words' => '我爸爸是李刚',
),
array(
'id' => 1,
'name' => 'c',
'words' => '为人民服务',
),
array(
'id' => 1,
'name' => 'a',
'words' => '法克鱿',
),
);这样一个二维数组,写一个算法,去重,id和name相等的数组,只留下一个,其他的删掉。
解决方案 »
- smarty html_radios??
- ※※※※○○○○PHP创建双层文件夹的疑惑○○○※※※※
- 清提供一个 PHP 视频上传 转码和播放的完整例子,谢谢
- Mysql 错误 Illegal mix of collations.....
- 请教:Fatal error: Call to a member function on a non-object ?
- 用户退出时怎么关闭session?
- 关于接口的用法问题
- 表单中textarea的内容超过512个字符就不提交
- 各位大侠能不能推荐一些面向对象的经典php项目?
- 大甩分了,不够再加~
- 时间戳的问题
- 使用这种方法如果每天增加1000条数据会不会怠慢
foreach($array as $key => $value)
{
$break = false;
for($i=0; $i<5; $i++)
{
if($key == $i)
{ continue; }
if($array[$i]['id'] == $value['id'] && $array[$i]['name'] == $value['name'])
{ $break = true; break; }
}
if($break)
{ continue; }
$new_array[] = $value;
}
$hashTable = array();
foreach($datas as $index => $data) {
if(isset($hashTable[$key = $data['id'] . $data['name']]))
unset($datas[$index]);
$hashTable[$key] = 1;
}
return $datas; //不需要重建索引
//return array_values($datas); //如果想要返回的数组重建索引
}
foreach($datas as $i => $data) {
$j = $i;
while($j -- >= 0) {
if($data['id'] == $datas[$j]['id'] && $data['name'] == $datas[$j]['name']) {
unset($datas[$i]);
break;
}
}
}
return $datas; //不需要重建索引
//return array_values($datas); //如果想要返回的数组重建索引
}
这是你的那种做法
比如说 id= 111, name = 222 和 id=11, name= 1222
那就搞毛了。
恩...是的...呵呵...谢谢提醒....这里$key = $data['id'] . $data['name']说明的就是用一个hash的思想.....$data['id'] . '|' . $data['name']这样就解决了.
$new=array();
foreach($array as $value){
$new[$value['id'].$value['name']]=
array("id"=>$value['id'],"name"=>$value['name'],"words"=>$value['words']);
}
print_r($new);
foreach($array as $value){
isset($key = $value['id'] . "|" . $value['name']) or $new[$key] = array("id"=>$value['id'],"name"=>$value['name'],"words"=>$value['words']);
}呵呵, 8楼好方法....
isset($result[$key = $value['id'] . "|" . $value['name']]) or $result[$key] = array("id"=>$value['id'],"name"=>$value['name'],"words"=>$value['words']);
}抱歉, 上面写错了, 顺便再利用php根据运算符自动创建再改进下
$arraytest=array();
foreach( $array as $value ){
$arraytest[$value['id'].$value['name']]=$value;
}
print_r($arraytest);
<?php$array = array(
array(
'id' => 1,
'name' => 'a',
'words' => '你好',
),
array(
'id' => 2,
'name' => 'b',
'words' => '你好',
),
array(
'id' => 1,
'name' => 'a',
'words' => '我爸爸是李刚',
),
array(
'id' => 1,
'name' => 'c',
'words' => '为人民服务',
),
array(
'id' => 1,
'name' => 'a',
'words' => '法克鱿',
),
);$arr=array();
foreach($array as $val)
{
$arr[$val['id'].'@'.$val['name']]=$val['words'];
}
$arr=array_unique($arr);$result=array();
foreach($arr as $key=>$value)
{
$temp=explode('@',$key);
$result[]=array('id'=>$temp[0],'name'=>$temp[1],'words'=>$value);
}
print_r($result);
?>
foreach($array as $v) {
$k = "$v[id]~!@#$v[id]";
if(! array_key_exists($k, $out)) //保留第一个符合条件的元素,若需保留最后一个符合条件的元素,则注释掉该行
$out[$k] = $v;
}print_r(array_values($out));