如何根据In [27]: result_ = set(([tuple(sorted(row)) for row in arr]))
In [28]: result = [list(i) for i in result_]
In [29]: result
Out[29]: [[0, 1], [1, 2], [6, 7], [5, 6], [2, 3], [3, 4]]
?
这是我的阵列:
ProductReference
答案 0 :(得分:2)
将唯一值设为您的密钥:
$newArray = array();
foreach($oldArray as $product){
$newArray[$product['ProductReference']] = $product;
}
答案 1 :(得分:1)
这可以解决您的问题或指导您。您可以根据任何密钥删除重复。如果您可以在数据库查询中进行,那将更好。直接从php manual
复制<?php
$details = array(
0 => array("id"=>"1", "name"=>"Mike", "num"=>"9876543210"),
1 => array("id"=>"2", "name"=>"Carissa", "num"=>"08548596258"),
2 => array("id"=>"1", "name"=>"Mathew", "num"=>"784581254"),
);
function unique_multidim_array($array, $key) {
$temp_array = array();
$i = 0;
$key_array = array();
foreach($array as $val) {
if (!in_array($val[$key], $key_array)) {
$key_array[$i] = $val[$key];
$temp_array[$i] = $val;
}
$i++;
}
return $temp_array;
}
$details = unique_multidim_array($details,'id');
var_dump($details);
输出
$details = array(
0 => array("id"=>"1","name"=>"Mike","num"=>"9876543210"),
1 => array("id"=>"2","name"=>"Carissa","num"=>"08548596258"),
);
答案 2 :(得分:1)
当找到新的重复子阵列时,此单行将覆盖早期的子阵列:(Demo)
$array=array_values(array_column($array,null,"ProductReference"));
这个双线将保留早期的子阵列并丢弃后面的子阵列:(Demo)
$rekeyed=array_column(array_reverse($array),null,"ProductReference");
sort($rekeyed);
apokryfos确定了保留早期子阵列并删除后续子阵列的最短/最甜蜜的方法:(Demo)
$array=array_unique($array,SORT_REGULAR);
// if the keys are important wrap array_unique() with array_values()