【发布时间】:2019-08-13 14:45:09
【问题描述】:
我有以下从外部 API 动态生成的数组:
$purchases = array(
array('product_id' => 7, 'receipt' => R13D13),
array('product_id' => 5, 'receipt' => Y28Z14),
array('product_id' => 7, 'receipt' => R02310),
array('product_id' => 5, 'receipt' => E11403)
);
期望的输出:
$purchases_new = array(
array('product_id' => 7, 'receipt' => R13D13),
array('product_id' => 5, 'receipt' => Y28Z14)
);
由于 API 的性质,我只能使用 array_map 提取数据:
$purchases_unique = array_unique(
array_map(function($pid){ return $pid['product_id']; }, $purchases)
);
print_r($purchases_unique);
输出
array((array[251] => 7) array([252] => 5))
输出完全不是我想要的:(如何array_map 2列product_id'和receipt并根据product_id删除重复行?
我想实现以下目标:
-
array_map两列? (product_id和receipt) - 删除
product_id基于product_id键的重复行?
【问题讨论】:
-
2) 在你的情况下,为什么这些例子会赢?
-
@Goikiu 抱歉我不明白你的问题?如果您指的是我给出的 array_map 代码示例,它就是一个示例。可能有一个更好的解决方案,这就是我在这里发布的原因:)
-
我不明白您删除重复数据的规则。为什么你选择
product_id7 (R13D13) 的第一个出现和product_id5 (E11403) 的第二个出现? -
@Caconde 所以基本上每一行都是一个产品采购订单。正如您将看到的 'product_id' 5 和 'product_id' 7 各有两次出现。我只想为每个产品显示一次,否则最终用户将看到相同的产品两次。不管是第一次还是最后一次出现,它只需要具有独特的产品并显示“收据”值即可。希望这是有道理的。
-
我已经更改了所需的输出,因为之前的输出让人们感到困惑。
标签: php arrays multidimensional-array array-map