【问题标题】:how to get array unique from multidimensional array when contains associative array?包含关联数组时如何从多维数组中获取唯一的数组?
【发布时间】:2024-01-19 06:33:01
【问题描述】:

我有一个多维数组,每行都包含一个关联数组。如何根据指定的数组键使其唯一?

我已经尝试了一些方法,例如:

$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_unique() 方法后得到这个结果。仅剩 2 条记录:

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

【问题讨论】:

标签: php multidimensional-array array-unique


【解决方案1】:

您可以使用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
        )

)

文档:array_column()array_values()

【讨论】:

  • ...你知道我喜欢这个!
  • @mickmackusa 哈哈。我打赌你会的。你是教我这个的人:)
  • 我曾经尝试过没有这种情况那么复杂的简单案例
  • @Eddie 这个问题大约每 24-48 小时被问一次,所以我会问你下次看到这个问题时,请将新问题标记为此页面的副本。 (也许将此页面作为浏览器上的书签 - 有一个专门的重复链接列表很方便。)