2012-08-30 35 views
0

我一直試圖找出一些日子,現在沒有好的結果。我有一個對象在PHP這個多維數組(print_r的):如果所有數組中存在該值,如何從PHP中的多維數組返回重複值。

Array 
(
[3] => Array 
    (
     [0] => stdClass Object 
      (
       [productoId] => 16 
      ) 

     [1] => stdClass Object 
      (
       [productoId] => 21 
      ) 

     [2] => stdClass Object 
      (
       [productoId] => 22 
      ) 

    ) 

[7] => Array 
    (
     [0] => stdClass Object 
      (
       [productoId] => 16 
      ) 

     [1] => stdClass Object 
      (
       [productoId] => 21 
      ) 

     [2] => stdClass Object 
      (
       [productoId] => 22 
      ) 

    ) 

[6] => Array 
    (
     [0] => stdClass Object 
      (
       [productoId] => 16 
      ) 

     [1] => stdClass Object 
      (
       [productoId] => 17 
      ) 

    ) 

) 

我想獲得的是存在於所有的陣列中的重複值,例如:

stdClass Object 
     (
      [productoId] => 16 
     ) 

但不是:

stdClass Object 
     (
      [productoId] => 21 
     ) 

任何想法我可以如何實現這一目標?

+0

http://stackoverflow.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-dimensional-array-in-php –

回答

0

這樣的:

$array = array(
      3 => array((object) array('productoId' => '16'), (object) array('productoId' => '21'), (object) array('productoId' => '22')), 
      7 => array((object) array('productoId' => '16'), (object) array('productoId' => '21'), (object) array('productoId' => '22')), 
      6 => array((object) array('productoId' => '16'), (object) array('productoId' => '17')) 
     ); 

$arrays = count($array); 
$match = array(); 
$duplicates = array(); 
foreach($array as $one){ 
    foreach($one as $single){ 
     $var = (array)$single; 
     if(!isset($match[$var['productoId']])) { $match[$var['productoId']] = 0; } 
     $match[$var['productoId']]++; 
     if($match[$var['productoId']] == $arrays){ 
      $duplicates[] = (int)$var['productoId']; 
     } 
    } 
} 
print_r($duplicates); 
+0

謝謝,這工作! –

相關問題