Per prima cosa, non è possibile utilizzare pianura array_unique
per questo problema perché array_unique tratta internamente gli elementi di matrice come stringhe, che è il motivo per cui "Impossibile convertire Array per String" avvisi appariranno quando si utilizza array_unique per questo .
Quindi provare questo:
$result = array(
0=>array('a'=>1,'b'=>'Hello'),
1=>array('a'=>1,'b'=>'other'),
2=>array('a'=>1,'b'=>'other')
);
$unique = array_map("unserialize", array_unique(array_map("serialize", $result)));
print_r($unique);
Risultato:
Array
(
[0] => Array
(
[a] => 1
[b] => Hello
)
[1] => Array
(
[a] => 1
[b] => other
)
)
serializzazione è molto utile per questo tipo di problemi.
Se ritieni che sia troppo magia per voi, controlla questo blog post
function array_multi_unique($multiArray){
$uniqueArray = array();
foreach($multiArray as $subArray){
if(!in_array($subArray, $uniqueArray)){
$uniqueArray[] = $subArray;
}
}
return $uniqueArray;
}
$unique = array_multi_unique($result);
print_r($unique);
Ironia della sorte, in_array
sta lavorando per gli array, dove array_unique
non lo fa.
fonte
2012-12-13 10:32:17
Che cosa lo rende duplicare 'a =' '& b = other' o semplicemente' b = other' ... – Baba
'a' e' B' @ Grazie Bada – kn3l
http://stackoverflow.com/questions/3767318/how-to-remove-duplicate-values-from-an-associative-array-based-on-a-specific-val –