2012-04-24 9 views
1
Array 
(
    [0] => Array 
     (
      [user_id] => 78 
      [post_id] => 3 
      [post_user_added_id] => 2 
     ) 

    [1] => Array 
     (
      [user_id] => 76 
      [post_id] => 8 
      [post_user_added_id] => 16 
     ) 

    [2] => Array 
     (
      [user_id] => 78 
      [post_id] => 9 
      [post_user_added_id] => 12 
     ) 

    [3] => Array 
     (
      [user_id] => 76 
      [post_id] => 9 
      [post_user_added_id] => 15 
     ) 

    [4] => Array 
     (
      [user_id] => 77 
      [post_id] => 9 
      [post_user_added_id] => 15 
     ) 

) 

ここで考えられるアイデアは、重複したuser_idがある場合、1つしか表示されません。これは予想される結果である:PHP配列重複したキー値を削除して1つしか表示しない

Array 
(
     [2] => Array 
      (
      [user_id] => 78 
      [post_id] => 9 
      [post_user_added_id] => 12 
      ) 

     [3] => Array 
      (
       [user_id] => 76 
       [post_id] => 9 
       [post_user_added_id] => 15 
      ) 

     [4] => Array 
      (
       [user_id] => 77 
       [post_id] => 9 
       [post_user_added_id] => 15 
      ) 

    ) 

理由の代わりに[0]キーまたは代わりに、[3]に表示されるの私は、重複キーの下キーを取得したいので、[1]キーの[2]キー。説明するのはちょっと難しいですが、私が期待したシナリオや出力を理解していただければ幸いです。

ご協力いただき誠にありがとうございます。ありがとう! :)

+0

これまでに何を試みたことがありますか? - あなたのコードを投稿して、ロードブロックを突き当たったポイントを明確にしてください。 – hakre

+0

私は実際に期待される出力を行う際の論理を知らないので何も試しませんでした。 – PinoyStackOverflower

+0

このウェブサイトはプログラマー向けですので、よくある質問をご覧ください。 – hakre

答えて

4

はこれを試してみてください:

foreach($arr as $k => $v) 
{ 
    foreach($arr as $key => $value) 
    { 
     if($k != $key && $v['user_id'] == $value['user_id']) 
     { 
      unset($arr[$k]); 
     } 
    } 
} 
print_r($arr); 
+0

あなたが残した前のものは完璧に動作していました!私は重複したキー値の下のキーを取得したいので、array_reverse()する必要はありません。 :) – PinoyStackOverflower

1

はあなたがUSER_IDを上書きするforeachループを使用することができます

$array = Array (
     "0" => Array (
       "user_id" => 78, 
       "post_id" => 3, 
       "post_user_added_id" => 2 
     ), 

     "1" => Array (
       "user_id" => 76, 
       "post_id" => 8, 
       "post_user_added_id" => 16 
     ), 

     "2" => Array (
       "user_id" => 78, 
       "post_id" => 9, 
       "post_user_added_id" => 12 
     ), 

     "3" => Array (
       "user_id" => 76, 
       "post_id" => 9, 
       "post_user_added_id" => 15 
     ), 

     "4" => Array (
       "user_id" => 77, 
       "post_id" => 9, 
       "post_user_added_id" => 15 
     ) 
); 
$keys = array(); 

// Get Position 
foreach ($array as $key => $value) { 
    $keys [$value ['user_id']] = $key; 
} 

// Remove Duplicate 
foreach ($array as $key => $value) { 
    if (! in_array ($key, $keys)) { 
     unset ($array [$key]); 
    } 
} 
var_dump ($array); 

出力

array 
    2 => 
    array 
     'user_id' => int 78 
     'post_id' => int 9 
     'post_user_added_id' => int 12 
    3 => 
    array 
     'user_id' => int 76 
     'post_id' => int 9 
     'post_user_added_id' => int 15 
    4 => 
    array 
     'user_id' => int 77 
     'post_id' => int 9 
     'post_user_added_id' => int 15 
+0

最初の配列は、望ましい出力ではないので、array_reverseする必要があるかもしれません。 – mpratt

0

を試してみてください。このようなものはうまくいくはずだと思う。

$new = array(); 
foreach ($array as $value) 
{ 
    $new[$value['user_id']] = $value; 
} 
print_r($new); 
関連する問題