php - repeated - quitar duplicados de array
php eliminar duplicados de matriz (5)
Mi PHP está oxidado, pero algo así debería funcionar:
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;
}
}
}
}
Me preguntaba si alguien podría ayudarme, estoy tratando de encontrar un script que verifique toda la matriz y elimine los duplicados si es necesario, luego escupir la matriz en el mismo formato.
Aquí hay un ejemplo de mi matriz (como verá hay algunos duplicados):
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] =>
)
)
)
Prueba esto, funciona con grandes arreglos:
$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);
Productos:
Array
(
[0] => one
[1] => two
[2] => three
[3] => four
[4] => five
)
Puede eliminar duplicados de una matriz haciendo:
$array = array_values(array_unique($array));
Use la función array_unique
.
Aquí hay una implementación de una función multidimensional 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;
}
No probado, a partir de los comentarios en el manual de funciones.
deje de usar su propia función de división de matrices que causa duplicados y lea la página del manual php en array_chunk