在PHP中删除多维数组中特定键的重复值,但删除最后一个?

问题描述 投票:2回答:3

我有这样的数组

 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
        )
)

因为我这样做的方法是永远删除第一个副本,最后一个总是保留,有些想法如何实现这一点?我希望你能帮助我,谢谢。

php arrays multidimensional-array
3个回答
1
投票

您可以尝试以下代码:

$my_arrays = array_unique($my_arrays, SORT_REGULAR);

var_dump($my_arrays);

0
投票

试试这个:

它以数组开头。第一次遇到重复时,它的值被添加到数组中。它遇到的第二个,第三个等时间被删除了。

$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'];
            }
        }
    }
}

0
投票

试试这个吧。

$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
    )
)
© www.soinside.com 2019 - 2024. All rights reserved.