我有这样的数组
Array
(
[1] => Array
(
[clave] => 10215484
[descripcion] => Azucena viva de agua
)
[2] => Array
(
[clave] => 10315484
[descripcion] => Azucena cortada fresca de agua
)
[3] => Array
(
[clave] => 10415484
[descripcion] => Azucena cortada seca de agua
)
[4] => Array
(
[clave] => 10215484
[descripcion] => Azucena viva de agua
)
)
正如您所看到的那样,第一个和最后一个数组是相同的,因此删除重复项的代码就像这样
foreach ($my_array as $k => $v) {
foreach ($my_arrays as $key => $value) {
if ($k != $key && $v['clave'] == $value['clave']) {
unset($my_array[$k]);
}
}
}
这工作正常,但我想删除最后一个数组,让第一个数组保持我添加每个数组的顺序,所以结果应该是
Array
(
[1] => Array
(
[clave] => 10215484
[descripcion] => Azucena viva de agua
)
[2] => Array
(
[clave] => 10315484
[descripcion] => Azucena cortada fresca de agua
)
[3] => Array
(
[clave] => 10415484
[descripcion] => Azucena cortada seca de agua
)
)
因为我这样做的方法是永远删除第一个副本,最后一个总是保留,有些想法如何实现这一点?我希望你能帮助我,谢谢。
您可以尝试以下代码:
$my_arrays = array_unique($my_arrays, SORT_REGULAR);
var_dump($my_arrays);
试试这个:
它以数组开头。第一次遇到重复时,它的值被添加到数组中。它遇到的第二个,第三个等时间被删除了。
$dup = array();
foreach ($my_array as $k => $v) {
foreach ($my_arrays as $key => $value) {
if ($k != $key && $v['clave'] == $value['clave']) {
if ( in_array( $value['clave'], $dup) ) {
unset($my_array[$k]);
} else {
$dup[] = $value['clave'];
}
}
}
}
试试这个吧。
$array = array(
array('clave' => 10215484 , 'descripcion' => 'Azucena viva de agua'),
array('clave' => 10215484 , 'descripcion' => 'Azucena viva de agua bentin'),
array('clave' => 10215484 , 'descripcion' => 'Azucena viva de agua corva'),
array('clave' => 10215484 , 'descripcion' => 'Azucena viva de agua')
);
$new_array = array_unique($array, SORT_REGULAR);
echo '<pre>';
print_r($new_array);
这将返回:
Array
(
[0] => Array
(
[clave] => 10215484
[descripcion] => Azucena viva de agua
)
[1] => Array
(
[clave] => 10215484
[descripcion] => Azucena viva de agua bentin
)
[2] => Array
(
[clave] => 10215484
[descripcion] => Azucena viva de agua corva
)
)