2012-01-23 10 views
0

キーvalmoreのその値は、私が重複する値(この場合は$入力[222]を削除したい配列から多次元要素の値が重複している場合は削除しますか?

を重複しているので、私は多次元配列は、この

$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' 
          ) 
      ); 

*重複したように見えており、結果の.so $入力[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、from FROM table 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>"; 
関連する問題