PHP数组忽略重复值

PHP数组忽略重复值,php,Php,在这个分组数组中,忽略customer_name的重复项的最佳方法是什么?我只想显示唯一名称的列表 Array ( [1] => Array ( [0] => Array ( [model_id] => 1 [work_order] => 10999 [id] => 1

在这个分组数组中,忽略customer_name的重复项的最佳方法是什么?我只想显示唯一名称的列表

Array
(
    [1] => Array
        (
            [0] => Array
                (
                    [model_id] => 1
                    [work_order] => 10999
                    [id] => 1
                    [model_name] => STC1.5
                    [stock] => 3
                    [free] => 1
                    [customer_name] => Jane Doe
                )

            [1] => Array
                (
                    [model_id] => 1
                    [work_order] => 10998
                    [id] => 1
                    [model_name] => STC1.5
                    [stock] => 3
                    [free] => 1
                    [customer_name] => Jane Doe
                )

        )
)

假设您只关心唯一的名称,并且
$arr
是:

Array
(
    [1] => Array
        (
            [0] => Array
                (
                    [model_id] => 1
                    [work_order] => 10999
                    [id] => 1
                    [model_name] => STC1.5
                    [stock] => 3
                    [free] => 1
                    [customer_name] => Jane Doe
                )

            [1] => Array
                (
                    [model_id] => 1
                    [work_order] => 10998
                    [id] => 1
                    [model_name] => STC1.5
                    [stock] => 3
                    [free] => 1
                    [customer_name] => Jane Doe
                )

        )
)
然后您可以使用:

$unique_names = array_keys(array_flip(array_column($arr[1],'customer_name')));

如果您关心微观优化,请尝试:

$unique_names = array();

foreach( $arr[1] as $v )
{
    $unique_names[$v['customer_name']] = $v['customer_name'];
}

您可以仅使用名称with array_列创建一个数组,并在该列上使用array_unique。
然后使用array_intersect_键从主阵列获取相应的子阵列

$name = array_unique(array_column($arr[1], "customer_name"));
$unique = array_intersect_key($arr, $name);

您尝试过数组_unique()吗?这应该适用于
array\u unique($array,SORT\u REGULAR)应该忽略哪个记录的可能重复,
10998
10999
?问题不清楚。您是否需要只获取不带重复项的
customer\u name
s列表,还是需要删除数组中的一些条目以避免两个条目具有相同的
customer\u name
?如果后一种情况是正确的,那么您应该定义忽略重复项的规则(除了它们具有相同的
客户名称
)。检测到重复项时要保留哪些条目?第一个?最后一个?在
id
中具有最小/最大值的一个?等。我需要显示所有客户名称的列表,除非它们是重复的。只要所有名称都是唯一的,显示哪一个并不重要。有更简单(可能更快)的方法来获取(唯一)名称列表。@axiac具体哪个部分效率低下?当我发表评论时,答案是使用带有用户函数回调的
array\u map()