2014-02-06 2 views
0
$invitedfrnds0 = Array 
      ([0] => Array 
       ( 
        [fb_user_id] => 100000058716604 
        [accept_status] => 0 
       ) 
      [1] => Array 
       ( 
        [fb_user_id] => 100000063917115 
        [accept_status] => 0 
       ) 
      [2] => Array 
       ( 
        [fb_user_id] => 100000261361844 
        [accept_status] => 0 
       ) 

      [3] => Array 
       ( 
        [fb_user_id] => 100005502043347 
        [accept_status] => 0 
       ) 

      ) 

$invitedfrnds2 = Array 
       ( 
        [0] => Array 
         ( 
          [fb_user_id] => 100005502043347 
          [accept_status] => 2 
         ) 
       ) 

здесь у меня есть два массив $invitedfrnds0 и $invitedfrnds2, есть в этих двух массивах некоторые сопоставления fb_user_id, если соответствие найдено, мне нужно удалить соответствующую запись формы первого массив. После этого мне нужно объединить эти два массиваразница массива ассоциативного массив

массив результатов будет выглядеть следующим образом.

$resultarray = Array 
       ([0] => Array 
        ( 
         [fb_user_id] => 100000058716604 
         [accept_status] => 0 
        ) 
       [1] => Array 
        ( 
         [fb_user_id] => 100000063917115 
         [accept_status] => 0 
        ) 
       [2] => Array 
        ( 
         [fb_user_id] => 100000261361844 
         [accept_status] => 0 
        ) 

       [3] => Array 
        ( 
         [fb_user_id] => 100005502043347 
          [accept_status] => 2 
        ) 

       ) 

Я искал много для этого, попробовал некоторые

$resultarray = array_diff($invitedfrnds0,$invitedfrnds2); 
$resultarray = array_map('array_diff_assoc', $invitedfrnds0, $invitedfrnds2); 

Но не получить это право, пожалуйста, помогите мне решить эту проблему, благодаря

+0

Пожалуйста, приложите немного усилий для форматирования вашего вопроса и вашего текста. –

+0

Функции массива php удобны, но они не швейцарские армейские ножи. Иногда вам просто нужно грязно и писать петли, чтобы делать то, что вы хотите. –

ответ

0

Вы должны использовать array_merge_recursive(), не array_diff():

array_merge_recursive($invitedfrnds2, $invitedfrnds0); 
0

Использование array_udiff вы могли бы достичь это.

$invitedfrnds0 = array(
    array('fb_user_id' => 100000058716604, 'accept_status' => 0), 
    array('fb_user_id' => 100000063917115, 'accept_status' => 0), 
    array('fb_user_id' => 100000261361844, 'accept_status' => 0), 
    array('fb_user_id' => 100005502043347, 'accept_status' => 0), 
); 

$invitedfrnds2 = array(
    array('fb_user_id' => 100005502043347, 'accept_status' => 2), 
); 


// remove all matched values. 
$result = array_udiff($invitedfrnds0, $invitedfrnds2, function($a, $b) 
    { 
    return $a['fb_user_id'] - $b['fb_user_id']; 
    }); 

// add values from the second array. 
$result = array_merge($result, $invitedfrnds2); 
var_dump($result);