在PHP中删除多维数组中的重复数组

在PHP中删除多维数组中的重复数组,php,arrays,Php,Arrays,出于某种原因,我在这方面遇到了麻烦,我在PHP中有一个多维数组,如下所示(MySQL数据)。我想做的是删除任何基于“dealerID”的重复数组 在下面的示例中,我希望搜索数组并删除任何重复的dealerID数组 举个例子: array(2) { [0]=> array(3) { ["dealerID"]=> string(3) "634" ["Name"]=> string(15) "Dealer Name String" [

出于某种原因,我在这方面遇到了麻烦,我在PHP中有一个多维数组,如下所示(MySQL数据)。我想做的是删除任何基于“dealerID”的重复数组

在下面的示例中,我希望搜索数组并删除任何重复的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"
  }
  [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
        )
)