2010-08-09 2 views
0

У меня есть два массива, которые структурированы как этотзначения экстракта из multidemensional массива

$array1 = Array 
(
    [0] => Array 
     (
      ['story_id'] => 47789 
     ) 

    [1] => Array 
     (
      ['story_id'] => 47779 
     ) 

    [2] => Array 
     (
      ['story_id'] => 47776 
     ) 

    [3] => Array 
     (
      ['story_id'] => 47773 
     ) 

    [4] => Array 
     (
      ['story_id'] => 47763 
     ) 
) 


$array2 = Array 
(
    [0] => Array 
     (
      ['story_id'] => 47789 
     ) 

    [1] => Array 
     (
      ['story_id'] => 47777 
     ) 

    [2] => Array 
     (
      ['story_id'] => 47776 
     ) 

    [3] => Array 
     (
      ['story_id'] => 47773 
     ) 

    [4] => Array 
     (
      ['story_id'] => 47763 
     ) 
) 

, и я хочу, чтобы получить разницу array1 от массив2 поэтому я попытался с помощью

$results = array_diff($array1, $array2); 

но поворачивает вверх пустой есть ли какой-либо простой способ обойти это, или мне было бы лучше, чтобы массивы сварились, и если так, то есть простой способ сделать это?

+0

Разве story_id всегда сортируются? – GWW

+0

это могло бы быть, если это должно было быть – mcgrailm

ответ

0

Это потому, что array_diff используется только для массива размера 1. Для вашего массива 2 позвольте использовать некоторый код из php.net.

function multidimensional_array_diff($a1, $a2) 
{ 
$r = array(); 

foreach ($a2 as $key => $second) { 
    foreach ($a1 as $key => $first) { 

     if (isset($a2[$key])) { 
      foreach ($first as $first_value) { 
       foreach ($second as $second_value) { 
        if ($first_value == $second_value) { 
         $true = true; 
         break; 
        } 
       } 
       if (!isset($true)) { 

        $r[$key][] = $first_value; 
       } 
       unset($true); 
      } 
     } else { 
      $r[$key] = $first; 
     } 
    } 
} 
return $r; 
} 
+0

Я уверен, что это сделало бы трюк, но его больше кода, чем я готов иметь дело с этим экземпляром, что я в итоге сделал, перебирал их, чтобы сгладить, а затем использовать diff – mcgrailm

 Смежные вопросы

  • Нет связанных вопросов^_^