由于某些原因,我在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"
}
所需结果,仅具有唯一经销商的阵列ID:
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];
}
}
和:
foreach($dealerList as $key => $subarray) {
if ( in_array( $dealerList[$subarray], $used ) ) {
echo "ALREADY";
}
else {
$used[] = $dealerList[$subarray];
echo "NOT ALREADY";
}
}
#$dealerList = $copy;
$arr=array(
array(
'dealerID'=>344,
'Name' => 'sdds',
'Other Name'
),
array(
'dealerID'=>400,
'Name' => 'sdds',
'Other Name'
),
array(
'dealerID'=>400,
'Name' => 'sdds',
'Other Name'
),
array(
'dealerID'=>347,
'Name' => 'sdds',
'Other Name'
),
);
foreach($arr as $key=>$item){
for($i=$key+1; $i<count($arr);$i++){
if($item['dealerID']==$arr[$i]['dealerID']){
unset($arr[$i]);
}
}
}
print_r($arr);
使用array_values
函数的简短解决方案:
// $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
)
)