Как получить массив уникальным из многомерного массива, когда содержит ассоциативный массив? - PullRequest
0 голосов
/ 23 мая 2018

У меня есть многомерный массив, который содержит ассоциативный массив в каждой строке.Как сделать его уникальным на основе указанного ключа массива?

Я уже попробовал какой-нибудь метод, например:

$cart = array_map("unserialize", array_unique(array_map("serialize", $cart)));

Но не смог произвести данные, так как я ожидал, что моя структура массива выглядит так:

Array
(
[0] => Array
 (
 [product_code] => prod3
 [qty] => 7
 )
[1] => Array
 (
 [product_code] => prod3
 [qty] => 1
 )
[2] => Array
 (
 [product_code] => prod4
 [qty] => 7
 )
[3] => Array
 (
 [product_code] => prod4
 [qty] => 7
 )
)

, и я ожидаю получитьэтот результат после использования метода array array_unique().Осталось всего 2 записи:

Array
(
[1] => Array
 (
 [product_code] => prod3
 [qty] => 1
 )
[2] => Array
 (
 [product_code] => prod4
 [qty] => 7
 )
)

1 Ответ

0 голосов
/ 23 мая 2018

Вы можете использовать array_column для преобразования массива в ассоциативный массив.Который переопределит повторяющиеся значения.Используйте array_values для преобразования ассоциативного массива в простой массив.

$arr = //Your array

$result = array_values(array_column( $arr , null, 'product_code' ));

print_r( $result );

Это приведет к:

Array
(
    [0] => Array
        (
            [product_code] => prod3
            [qty] => 1
        )

    [1] => Array
        (
            [product_code] => prod4
            [qty] => 7
        )

)

Doc: array_column () , array_values ​​()

...