我有两个数组$my_array
。并且存在具有不同['Mot Clé']
的重复数组Position
这是$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
)
)
我想取消复制,只留下最大['Position']
的人!关于我如何实现这一点的任何想法?谢谢!
答案 0 :(得分:1)
假设职位按升序排列,我会按以下方式行事:
- 扭转阵列。
- 扫描阵列并将“MotClé”存储在另一个阵列中。在存储之前,检查它是否已存在。如果它存在,则删除第一个数组中的条目。
array_reverse($my_array);
$keywords = array();
foreach($my_array as $key=>$value)
{
$keyword = $value["Mot Clé"];
if(isset($keywords[$keyword]))
unset($my_array[$key]);
$keywords[$keyword] = "";
}
如果位置没有按递增顺序出现,那么您必须事先按降序对数组进行排序。 使用usort()可以实现:
usort($$my_array, function($a, $b)
{
if ($a["Position"] == $b["Position"]){ return 0;}
else if ($a["Position"] > $b["Position"]){return -1;}
else { return 1; }
});
答案 1 :(得分:1)
试试这个:
<?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 AS $key => $value) {
$tmp[$value["Mot Clé"]][] = $value;
}
foreach($tmp AS $key => $value) {
usort($tmp[$key], "sort_compare");
}
foreach($tmp AS $key => $value) {
if(is_array($value) && isset($value[0])) $return[] = $value[0];
}
return $return;
}
echo '<pre>';
print_r(remove_duplicates($arr));
echo '</pre>';
?>
我还考虑到你的阵列中可能有其他类型的“MotClé”:)