2012-01-23 159 views
0

我有一个多维数组看起来像这样如果重复从数组中删除多维元素的值?

$input = Array 
         (
          [222] => Array 
           (
            'id' => 222 
            'val' => 'def' 
            'more' => 'test' 
          ), 
         [223] => Array 
           (
            'id' => 223 
            'val' => 'aaa' 
            'more' => 'aaa' 
          ), 
         [224] => Array 
           (
            'id' => 224 
            'val' => 'aaa' 
            'more' => 'ddd' 
          ) 
         [225] => Array 
           (
            'id' => 225 
            'val' => 'def' 
            'more' => 'test' 
          ) 
      ); 

*复制由于其键valmore的值复制

我想删除重复的值(在这种情况下,$输入[222]和$输入[225]。所以结果应该只

$res = Array 
         (
          [222] => Array 
           (
            'id' => 222 
            'val' => 'def' 
            'more' => 'test' 
          ), 
         [223] => Array 
           (
            'id' => 223 
            'val' => 'aaa' 
            'more' => 'aaa' 
          ), 
         [224] => Array 
           (
            'id' => 224 
            'val' => 'aaa' 
            'more' => 'ddd' 
          ) 
      ); 

任何人都知道如何做到这一点?

感谢

+0

你不得不(通过数组循环,不断遇到ID的列表,并核对列表中的每个条目)来做到这一点编程。但是,如果您从数据库获取此数据,则可能可以修改查询以删除重复项。 – Tom

+0

是的,我从数据库中得到它。 – sophie

+0

尝试使用'GROUP'和'ORDER'来获得你想要的结果。就像这样:'SELECT id,val,more FROM表GROUP BY id ORDER BY [时间戳或其他顺序确定字段]' – Tom

回答

2
$newInput = array(); 
foreach($input as $k => $v) $newInput[$v['val'].$v['more']] = $v; 
//You may stop here. 
$newInputNum = array(); 
foreach($newInput as $k => $v) $newInputNum[$v['id']] = $v; 

echo "<pre>";print_r($newInputNum );echo "</pre>";