在PHP中删除多维数组中的重复数组
出于某种原因,我在这方面遇到了麻烦,我在PHP中有一个多维数组,如下所示(MySQL数据)。我想做的是删除任何基于“dealerID”的重复数组 在下面的示例中,我希望搜索数组并删除任何重复的dealerID数组 举个例子:在PHP中删除多维数组中的重复数组,php,arrays,Php,Arrays,出于某种原因,我在这方面遇到了麻烦,我在PHP中有一个多维数组,如下所示(MySQL数据)。我想做的是删除任何基于“dealerID”的重复数组 在下面的示例中,我希望搜索数组并删除任何重复的dealerID数组 举个例子: array(2) { [0]=> array(3) { ["dealerID"]=> string(3) "634" ["Name"]=> string(15) "Dealer Name String" [
array(2) {
[0]=>
array(3) {
["dealerID"]=>
string(3) "634"
["Name"]=>
string(15) "Dealer Name String"
["Other Name"]=>
string(15) "Dealer Name String"
}
[1]=>
array(3) {
["dealerID"]=>
string(3) "777"
["Name"]=>
string(15) "Dealer Name String"
["Other Name"]=>
string(15) "Dealer Name String"
}
[2]=>
array(2) {
["dealerID"]=>
string(3) "777"
["Name"]=>
string(15) "Dealer Name String"
}
[3]=>
array(3) {
["dealerID"]=>
string(3) "777"
["Name"]=>
string(15) "Dealer Name String"
["Other Name"]=>
string(15) "Dealer Name String"
}
[4]=>
array(2) {
["dealerID"]=>
string(3) "777"
["Name"]=>
string(15) "Dealer Name String"
}
所需结果,仅具有唯一dealerID的阵列:
array(2) {
[0]=>
array(3) {
["dealerID"]=>
string(3) "634"
["Name"]=>
string(15) "Dealer Name String"
["Other Name"]=>
string(15) "Dealer Name String"
}
[1]=>
array(3) {
["dealerID"]=>
string(3) "777"
["Name"]=>
string(15) "Dealer Name String"
["Other Name"]=>
string(15) "Dealer Name String"
}
我所尝试的:
$copy = $array; // create copy to delete dups from
$used = array(); // used emails
for( $i=0; $i<count($array); $i++ ) {
if ( in_array( $array[$i][0], $used ) ) {
unset($copy[$i]);
}
else {
$used[] = $array[$i][0];
}
}
$arr=array(
排列(
“dealerID”=>344,
'Name'=>'sdds',
“其他名称”
),
排列(
“dealerID”=>400,
'Name'=>'sdds',
“其他名称”
),
排列(
“dealerID”=>400,
'Name'=>'sdds',
“其他名称”
),
排列(
“dealerID”=>347,
'Name'=>'sdds',
“其他名称”
),
);
foreach($arr as$key=>$item){
对于($i=$key+1;$i使用array\u值的简短解决方案
函数:
// $arr is your exemplary array from the question
$result = [];
foreach ($arr as $v) {
$result[$v['dealerID']] = $v;
}
$result = array_values($result);
print_r($result);
输出:
Array
(
[0] => Array
(
[dealerID] => 634
[Name] => Dealer Name String
[Other Name] => Dealer Name String
)
[1] => Array
(
[dealerID] => 777
[Name] => Dealer Name String
[Other Name] => Dealer Name String
)
)
好的,我将把它放在上面的代码中group by dealerID
我把我试过的东西放在上面,还有一个命令可以比较数组,但我认为它不起作用,因为我的数组大小并不总是一样的。@MikeQ你有下面的答案。试试。谢谢,你能告诉我key+1在做什么吗?我似乎忽略了其中一个由于这个原因,数组实际上看起来它至少留下了一个dup…嗯,不,只要应用并告诉我,实际上当它开始检查时,它不需要自己检查值…所以它至少留下一个值。你需要删除重复的值,而不是所有有重复的值。我相信你需要其中一个,并且删除重复项:)@MikeQ你也有其他答案。检查它们,如果有人为你工作,请标记+投票。如果其他人有用,你也可以投票。谢谢。
// $arr is your exemplary array from the question
$result = [];
foreach ($arr as $v) {
$result[$v['dealerID']] = $v;
}
$result = array_values($result);
print_r($result);
Array
(
[0] => Array
(
[dealerID] => 634
[Name] => Dealer Name String
[Other Name] => Dealer Name String
)
[1] => Array
(
[dealerID] => 777
[Name] => Dealer Name String
[Other Name] => Dealer Name String
)
)