Проблема удаления дубликатов заключается в том, как определить, какие значения остаются, поскольку вы говорите о частичной уникальности.
Это решение, приведенное ниже, просто сохраняет первое появление в порядке индекса. Это не совсем элегантно, но работает.
<code><?php
$aa = array();
$aa[] = array('Tires'=>100, 'Oil'=>10, 'Spark Plugs'=>4 );
$aa[] = array('Tires'=>454, 'Oil'=>43, 'Spark Plugs'=>3 );
$aa[] = array('Tires'=>34, 'Oil'=>55, 'Spark Plugs'=>44 );
$aa[] = array('Tires'=>454, 'Oil'=>43, 'Spark Plugs'=>45 );
$aa[] = array('Tires'=>34, 'Oil'=>55, 'Spark Plugs'=>433 );
$aa[] = array('Tires'=>23, 'Oil'=>33, 'Spark Plugs'=>44 );
echo '<pre>';
print_r( arrayUniqeBySubKey( $aa, 'Oil' ) );
echo '
';
функция arrayUniqeBySubKey ($ array, $ key)
{
$ indexAggregates = array ();
foreach ($ массив как $ idx => $ subArray)
{
$ indexAggregates [$ subArray [$ key]] [] = $ idx;
}
foreach ($ indexAggregates как $ originalIndexes)
{
$ numOriginals = count ($ originalIndexes);
if (1 == $ numOriginals)
{
Продолжить;
}
для ($ i = 1; $ i