php remove duplicates from array

2019-01-28 05:38发布

I was wondering if anyone could help me out, I'm trying to find a script that will check my entire array and remove any duplicates if required, then spit out the array in the same format.

Here's an example of my array (as you will see there are some duplicates):

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] => 
                )

        )

)

5条回答
神经病院院长
2楼-- · 2019-01-28 05:59

You can remove duplicates from an array by doing:

$array = array_values(array_unique($array));
查看更多
Bombasti
3楼-- · 2019-01-28 05:59

My PHP's rusty, but something like this should work:

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;
      }
    }
  }
}
查看更多
Ridiculous、
4楼-- · 2019-01-28 06:17

Use the array_unique function.

Here is an implentation of a multi-dimensional array_unique function.

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;
}

Not tested, from the comments in the function manual.

查看更多
SAY GOODBYE
5楼-- · 2019-01-28 06:22

stop using your own array splitting function that causes duplicates and read the php manual page on array_chunk

查看更多
劳资没心,怎么记你
6楼-- · 2019-01-28 06:25

Try this, it works with large arrays:

$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);

Outputs:

Array
(
    [0] => one
    [1] => two
    [2] => three
    [3] => four
    [4] => five
)
查看更多
登录 后发表回答