Delete duplicated element from an mutidimension array - PHP -
i have 2 arrays , $my_array
. , there duplicated arrays ['mot clé']
diffrent position
here's $my_array
:
array ( [0] => array ( [position] => 0 [moteur] => bing.com france - (tout afficher) [mot clé] => bts esf 24 [site] => http://www.test.com [page positionnée] => pas de résultat [titre de la page] => [date] => 28/02/2014 ) [1] => array ( [position] => 0 [moteur] => bing.com france - (tout afficher) [mot clé] => bts esf 33 [site] => http://www.test.com [page positionnée] => pas de résultat [titre de la page] => [date] => 28/02/2014 ) [2] => array ( [position] => 1 [moteur] => bing.com france - (tout afficher) [mot clé] => bts esf 33 [site] => http://www.test.com [page positionnée] => pas de résultat [titre de la page] => [date] => 28/02/2014 ) [3] => array ( [position] => 5 [moteur] => bing.com france - (tout afficher) [mot clé] => bts esf 33 [site] => http://www.test.com [page positionnée] => pas de résultat [titre de la page] => [date] => 28/02/2014 ) )
i want unset duplicate leave 1 has biggest ['position']
! idea on how can achiev ? thanks!
try :
<?php $arr = array( array( "position" => 0, "moteur" => "bing.com france - (tout afficher)", "mot clé" => "bts esf 33", "site" => "http://www.test.com", "page positionnée" => "pas de résultat", "titre de la page" => "", "date" => "28/02/2014" ), array( "position" => 0, "moteur" => "bing.com france - (tout afficher)", "mot clé" => "test", "site" => "http://www.test.com", "page positionnée" => "pas de résultat", "titre de la page" => "", "date" => "28/02/2014" ), array( "position" => 0, "moteur" => "bing.com france - (tout afficher)", "mot clé" => "bts esf 33", "site" => "http://www.test.com", "page positionnée" => "pas de résultat", "titre de la page" => "", "date" => "28/02/2014" ), array( "position" => 1, "moteur" => "bing.com france - (tout afficher)", "mot clé" => "bts esf 33", "site" => "http://www.test.com", "page positionnée" => "pas de résultat", "titre de la page" => "", "date" => "28/02/2014" ), array( "position" => 1, "moteur" => "bing.com france - (tout afficher)", "mot clé" => "test", "site" => "http://www.test.com", "page positionnée" => "pas de résultat", "titre de la page" => "", "date" => "28/02/2014" ), array( "position" => 5, "moteur" => "bing.com france - (tout afficher)", "mot clé" => "bts esf 33", "site" => "http://www.test.com", "page positionnée" => "pas de résultat", "titre de la page" => "", "date" => "28/02/2014" ), array( "position" => 3, "moteur" => "bing.com france - (tout afficher)", "mot clé" => "test", "site" => "http://www.test.com", "page positionnée" => "pas de résultat", "titre de la page" => "", "date" => "28/02/2014" ), array( "position" => 0, "moteur" => "bing.com france - (tout afficher)", "mot clé" => "testing", "site" => "http://www.test.com", "page positionnée" => "pas de résultat", "titre de la page" => "", "date" => "28/02/2014" ), array( "position" => 8, "moteur" => "bing.com france - (tout afficher)", "mot clé" => "testing", "site" => "http://www.test.com", "page positionnée" => "pas de résultat", "titre de la page" => "", "date" => "28/02/2014" ), array( "position" => 9, "moteur" => "bing.com france - (tout afficher)", "mot clé" => "testing", "site" => "http://www.test.com", "page positionnée" => "pas de résultat", "titre de la page" => "", "date" => "28/02/2014" ), ); function sort_compare($a, $b) { return (($a["position"] == $b["position"]) ? 0 : (($a["position"] > $b["position"]) ? -1 : 1)); } function remove_duplicates($array) { $return = array(); $tmp = array(); foreach($array $key => $value) { $tmp[$value["mot clé"]][] = $value; } foreach($tmp $key => $value) { usort($tmp[$key], "sort_compare"); } foreach($tmp $key => $value) { if(is_array($value) && isset($value[0])) $return[] = $value[0]; } return $return; } echo '<pre>'; print_r(remove_duplicates($arr)); echo '</pre>'; ?>
i have taken consideration might have other types of "mot clé"'s in array :)
Comments
Post a Comment