2010-05-18 140 views
4

我想知道是否有人可以帮助我,我试图找到一个脚本,将检查我的整个数组,并删除任何重复如果需要,然后吐出阵列在相同的格式。php删除数组中的重复项

这里是我的阵列的例子(你会看到有一些重复):

Array 
(
    [0] => Array 
     (
      [0] => stdClass Object 
       (
        [bid] => 34 
        [name] => Adrianos Pizza & Pasta 
        [imageurl] => sp_adrian.gif 
        [clickurl] => # 
       ) 

      [1] => stdClass Object 
       (
        [bid] => 42 
        [name] => Ray White Mordialloc 
        [imageurl] => sp_raywhite.gif 
        [clickurl] => http://www.raywhite.com/ 
       ) 

      [2] => stdClass Object 
       (
        [bid] => 48 
        [name] => Beachside Osteo 
        [imageurl] => sp_beachside.gif 
        [clickurl] => http://www.beachsideosteo.com.au/ 
       ) 

      [3] => stdClass Object 
       (
        [bid] => 57 
        [name] => Southern Suburbs Physiotherapy Centre 
        [imageurl] => sp_sspc.jpg 
        [clickurl] => http://www.sspc.com.au 
       ) 

      [4] => stdClass Object 
       (
        [bid] => 52 
        [name] => Mordialloc Travel and Cruise 
        [imageurl] => sp_morditravel.jpg 
        [clickurl] => http://www.yellowpages.com.au/vic/mordialloc/mordialloc-travel-cruise-13492525-listing.html 
       ) 

      [5] => stdClass Object 
       (
        [bid] => 37 
        [name] => Mordialloc Cellar Door 
        [imageurl] => sp_cellardoor.gif 
        [clickurl] => 
       ) 

      [6] => stdClass Object 
       (
        [bid] => 53 
        [name] => Carmotive 
        [imageurl] => sp_carmotive.jpg 
        [clickurl] => http://www.carmotive.com.au/ 
       ) 

     ) 

    [1] => Array 
     (
      [0] => stdClass Object 
       (
        [bid] => 55 
        [name] => 360South 
        [imageurl] => sp_360.jpg 
        [clickurl] => 
       ) 

      [1] => stdClass Object 
       (
        [bid] => 40 
        [name] => Ripponlea Mitsubishi 
        [imageurl] => sp_mitsubishi.gif 
        [clickurl] => 
       ) 

      [2] => stdClass Object 
       (
        [bid] => 57 
        [name] => Southern Suburbs Physiotherapy Centre 
        [imageurl] => sp_sspc.jpg 
        [clickurl] => http://www.sspc.com.au 
       ) 

      [3] => stdClass Object 
       (
        [bid] => 52 
        [name] => Mordialloc Travel and Cruise 
        [imageurl] => sp_morditravel.jpg 
        [clickurl] => http://www.yellowpages.com.au/vic/mordialloc/mordialloc-travel-cruise-13492525-listing.html 
       ) 

      [4] => stdClass Object 
       (
        [bid] => 37 
        [name] => Mordialloc Cellar Door 
        [imageurl] => sp_cellardoor.gif 
        [clickurl] => 
       ) 

      [5] => stdClass Object 
       (
        [bid] => 53 
        [name] => Carmotive 
        [imageurl] => sp_carmotive.jpg 
        [clickurl] => http://www.carmotive.com.au/ 
       ) 

     ) 

    [2] => Array 
     (
      [0] => stdClass Object 
       (
        [bid] => 44 
        [name] => Mordialloc Personal Trainers 
        [imageurl] => sp_mordipt.gif 
        [clickurl] => # 
       ) 

      [1] => stdClass Object 
       (
        [bid] => 36 
        [name] => Big River 
        [imageurl] => sp_bigriver.gif 
        [clickurl] => 
       ) 

      [2] => stdClass Object 
       (
        [bid] => 52 
        [name] => Mordialloc Travel and Cruise 
        [imageurl] => sp_morditravel.jpg 
        [clickurl] => http://www.yellowpages.com.au/vic/mordialloc/mordialloc-travel-cruise-13492525-listing.html 
       ) 

      [3] => stdClass Object 
       (
        [bid] => 37 
        [name] => Mordialloc Cellar Door 
        [imageurl] => sp_cellardoor.gif 
        [clickurl] => 
       ) 

      [4] => stdClass Object 
       (
        [bid] => 53 
        [name] => Carmotive 
        [imageurl] => sp_carmotive.jpg 
        [clickurl] => http://www.carmotive.com.au/ 
       ) 

     ) 

    [3] => Array 
     (
      [0] => stdClass Object 
       (
        [bid] => 41 
        [name] => Print House Graphics 
        [imageurl] => sp_printhouse.gif 
        [clickurl] => 
       ) 

      [1] => stdClass Object 
       (
        [bid] => 49 
        [name] => Kim Reed Conveyancing 
        [imageurl] => sp_kimreed.jpg 
        [clickurl] => 
       ) 

      [2] => stdClass Object 
       (
        [bid] => 37 
        [name] => Mordialloc Cellar Door 
        [imageurl] => sp_cellardoor.gif 
        [clickurl] => 
       ) 

      [3] => stdClass Object 
       (
        [bid] => 53 
        [name] => Carmotive 
        [imageurl] => sp_carmotive.jpg 
        [clickurl] => http://www.carmotive.com.au/ 
       ) 

     ) 

    [4] => Array 
     (
      [0] => stdClass Object 
       (
        [bid] => 38 
        [name] => Lowe Financial Group 
        [imageurl] => sp_lowe.gif 
        [clickurl] => http://lowefinancial.com/ 
       ) 

      [1] => stdClass Object 
       (
        [bid] => 58 
        [name] => Dicount Lollie Shop 
        [imageurl] => new dls logo.jpg 
        [clickurl] => 
       ) 

      [2] => stdClass Object 
       (
        [bid] => 53 
        [name] => Carmotive 
        [imageurl] => sp_carmotive.jpg 
        [clickurl] => http://www.carmotive.com.au/ 
       ) 

     ) 

    [5] => Array 
     (
      [0] => stdClass Object 
       (
        [bid] => 45 
        [name] => Mordialloc Sporting Club 
        [imageurl] => msc logo.jpg 
        [clickurl] => 
       ) 

      [1] => stdClass Object 
       (
        [bid] => 33 
        [name] => Two Brothers 
        [imageurl] => sp_2brothers.gif 
        [clickurl] => http://www.2brothers.com.au/ 
       ) 

     ) 

    [6] => Array 
     (
      [0] => stdClass Object 
       (
        [bid] => 46 
        [name] => Patterson Securities 
        [imageurl] => cmyk patersons_withtag.jpg 
        [clickurl] => 
       ) 

      [1] => stdClass Object 
       (
        [bid] => 56 
        [name] => Logical Services 
        [imageurl] => sp_logical.jpg 
        [clickurl] => 
       ) 

     ) 

    [7] => Array 
     (
      [0] => stdClass Object 
       (
        [bid] => 59 
        [name] => Pure Sport 
        [imageurl] => sp_psport.jpg 
        [clickurl] => http://www.puresport.com.au/ 
       ) 

      [1] => stdClass Object 
       (
        [bid] => 51 
        [name] => Richmond and Bennison 
        [imageurl] => sp_richmond.jpg 
        [clickurl] => http://www.richbenn.com.au/ 
       ) 

     ) 

    [8] => Array 
     (
      [0] => stdClass Object 
       (
        [bid] => 39 
        [name] => Main Street Mordialloc 
        [imageurl] => main street cafe.jpg 
        [clickurl] => 
       ) 

      [1] => stdClass Object 
       (
        [bid] => 50 
        [name] => Letec 
        [imageurl] => sp_letec.jpg 
        [clickurl] => www.letec.biz 
       ) 

     ) 

    [9] => Array 
     (
      [0] => stdClass Object 
       (
        [bid] => 54 
        [name] => PPM Builders 
        [imageurl] => sp_ppm.jpg 
        [clickurl] => http://www.hotfrog.com.au/Companies/P-P-M-Builders 
       ) 

      [1] => stdClass Object 
       (
        [bid] => 43 
        [name] => Systema 
        [imageurl] => sp_systema.gif 
        [clickurl] => 
       ) 

     ) 

) 
+1

你有很多嵌套数组。你的意思是重复的?例如。第一个子数组包含一个ID为“57”的对象。这是否意味着,这个对象应该在第二个(和所有进一步的)子阵列中被删除? – 2010-05-18 21:35:17

+1

*可能重复*:http://stackoverflow.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-dimensional-array-in-php – 2010-05-18 21:38:07

+0

是的,这就是我之后..我知道它是多维的,但是如果有任何来自任何子阵列的任何东西的重复,它应该被删除:) – SoulieBaby 2010-05-18 21:38:10

回答

2

使用array_unique功能。

这是一个多维array_unique函数的实现。

function super_unique($array) 
{ 
    $result = array_map("unserialize", array_unique(array_map("serialize", $array))); 

    foreach ($result as $key => $value) 
    { 
    if (is_array($value)) 
    { 
     $result[$key] = super_unique($value); 
    } 
    } 

    return $result; 
} 

未经测试,来自功能手册中的注释。

+0

我试过了,但它仍然显示重复的 – SoulieBaby 2010-05-18 21:40:13

+0

+1,但是这似乎非常熟悉(http://stackoverflow.com/questions/1247950/how-to-remove-duplicated-2 -dimension-array-in-php/1248189#1248189)... xP – 2010-05-18 21:40:16

+1

您需要将对象转换为数组并使用'array_merge'。 – 2010-05-18 21:42:38

5

您可以通过执行从数组中删除重复项:

$array = array_values(array_unique($array)); 
+2

这是否适用于多维数组?我不这么认为... – 2010-05-18 21:37:17

0

我的PHP的生疏,但这样的事情应该工作:使用

function makeUniqueBidArray(&$array) 
{ 
    $tempArray = array(); 
    foreach($array as $bidArray) { 
    foreach($bidArray as $bid) { 
     if (isset($tempArray[$bid->bid]) { 
     unset($bid); 
     } else { 
     $tempArray[$bid->bid] = $bid->name; 
     } 
    } 
    } 
} 
3

php手册页试试这个,它与大型阵列:

$original = array('one', 'two', 'three', 'four', 'five', 'two', 'four'); 
$filtered = array(); 
foreach ($original as $key => $value){ 
    if(in_array($value, $filtered)){ 
     continue; 
    } 
    array_push($filtered, $value); 
} 

print_r($filtered); 

输出:

Array 
(
    [0] => one 
    [1] => two 
    [2] => three 
    [3] => four 
    [4] => five 
) 
+0

3几年后,这帮助我与我的编码作家的块。 – 2014-11-17 15:01:28