从list_title
可以看到,我想按值删除重复项。我知道有几个问题和答案,但是他们的解决方案对我不起作用。
这是我尝试过的:
$uniqueArray = array_map("unserialize", array_unique(array_map("serialize", $notify)));
结果:
Array
(
[0] => Array
(
[list_id] => 86
[list_reference] => 130948
[list_title] => Offer: apartment 2+kk
[list_city] => Prague
[list_date] => 2017-03-03 11:20:35
[list_status] => 0
[list_creator] => Company A
[list_price] => 30000
[list_furniture] => ["1","0","0"]
[list_accommodation] => flat
)
[1] => Array
(
[list_id] => 87
[list_reference] => 130947
[list_title] => Offer: apartment 2+kk
[list_date] => 2017-03-03 11:20:35
[list_status] => 0
[list_creator] => Company B
[list_price] => 30000
[list_furniture] => ["1","0","0"]
[list_accommodation] => flat
)
[2] => Array ...
由于标题的原因,预期结果应该是其中之一:
Array
(
[0] => Array
(
[list_id] => 86
[list_reference] => 130948
[list_title] => Offer: apartment 2+kk
[list_city] => Prague
[list_date] => 2017-03-03 11:20:35
[list_status] => 0
[list_creator] => Company A
[list_price] => 30000
[list_furniture] => ["1","0","0"]
[list_accommodation] => flat
)
最佳答案
因此,基本上,您想通过'list_title'
列删除重复项。假设我们保留了该标题的第一个匹配项。然后,您可以使用几个标准函数来实现此目的:
// Reverse array, so the first occurrence kept.
$data = array_reverse($data);
$result = array_reverse( // Reverse array to the initial order.
array_values( // Get rid of string keys (make array indexed again).
array_combine( // Create array taking keys from column and values from the base array.
array_column($data, 'list_title'),
$data
)
)
);
这是working demo。
更新:
基于@mickmackusa注释,可以将代码简化为:
$result = array_reverse(array_values(array_column(
array_reverse($data),
null,
'list_title'
)));
这是在the docs中有关
column_key
参数规范的内容:关于PHP按值从多维数组中删除重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42577258/