2012-03-20 3 views
0

私は現在、アレイ多次元配列の保守、データの整合性

array 
    161 => 
    array 
     'cat_id' => string '5' (length=1) 
     'temp_id' => string '2' (length=1) 
     'prod_id' => string '44' (length=2) 
    162 => 
    array 
     'cat_id' => string '3' (length=1) 
     'temp_id' => string '2' (length=1) 
     'prod_id' => string '44' (length=2) 
    164 => 
    array 
     'cat_id' => string '2' (length=1) 
     'temp_id' => string '2' (lenth=1) 
     'prod_id' => string '45' (length=2) 

私は重複した配列の値を削除するには、この機能を使用していますを持っています配列prod_idが前の配列の複製である場合は配列。

私は製品の完全なカテゴリIDリストを維持したいと思いますが、現在キー=>値のペア全体を解除すると削除されます。

私はこれをどのように達成することができましたか?コメントどおり

EDIT:

私は、結果として、このような何かを探しています:

array 
    161 => 
     'cat_id' => array('5','3') 
     'prod_id' => 44 

だから私はプロダクトIDを重複し、重複配列のエントリを削除しますがカテゴリーのIDを維持しています。私はそれが助けて欲しい

+0

良い点、私は質問を更新しました。おかげでAD7six –

答えて

1

はたぶん、このような何か:

$input = array(); // define your array 
$output = array(); // here will be output 
$temp = array(); 
foreach($input as $key => $value) 
{ 
    if (isset($temp[$value['prod_id']])) 
    { 
     $output[$temp[$value['prod_id']]]['cat_id'][] = $value['cat_id']; 
    } 
    else 
    { 
     $output[$key] = array(
      'cat_id' => array($value['cat_id']), 
      'prod_id' => $value['prod_id'] 
     ); 
     $temp[$value['prod_id']] = $key; 
    } 
} 
+0

ありがとう、これは素晴らしいです! –

0

私の頭に浮かぶ最初のことは、最初のオカレンス(この例の配列(44 => 161,45 => 164))のarray_index => prod_idの支援構造を構築することです。最初に見つかったものだけを削除し、同時にprod_idを追加します。