从多维数组中删除重复的元素-PHP
我有两个数组和从多维数组中删除重复的元素-PHP,php,arrays,Php,Arrays,我有两个数组和$my_数组。还有重复的数组,它们的位置不同 这是$my_数组: Array ( [0] => Array ( [Position] => 0 [Moteur] => Bing.com France - (Tout afficher) [Mot Clé] => BTS esf 24 [Site] => http://www.test.com [Page positi
$my_数组
。还有重复的数组,它们的位置不同
这是$my_数组
:
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']
!你知道我怎样才能做到吗?谢谢 假设职位以递增的顺序出现,我将如下:-反转阵列。
-扫描阵列并将“Mot Clé”存储在另一个阵列中。在存储之前,请检查它是否已经存在。如果存在,则删除第一个数组中的条目
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()实现:
试试这个:
<?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>';
?>
我还考虑到,您的数组中可能有其他类型的“Mot Clé”:)@spencex“只留下拥有最大['Position']的人”不是什么意思吗?对不起,不,不是:(
<?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>';
?>