我有一个大型的产品关联数组。我想检查是否有重复的产品,然后获得低价的产品。
我可以使用array_unique和array_count_values来查找重复的记录,但我不知道如何处理排序部分。
阵列属性:
- product_id(唯一)
- 所有权
- 价格
样本数据
阵列([0]=>数组([product_id]=>1111[title]=>产品1[价格]=>140)[1] =>阵列([product_id]=>2222[title]=>产品2[价格]=>66)[2] =>阵列([product_id]=>1111[title]=>产品1 A[价格]=>123)[3] =>阵列([product_id]=>3333[title]=>产品3[价格]=>37.4)[4] =>阵列([product_id]=>4444[title]=>产品4[价格]=>10.5))
产品1是重复的,因此将有一个针对产品1的记录,并且应该保持低价格。
输出应类似
阵列([0]=>数组([product_id]=>1111[title]=>产品1[价格]=>123)[1] =>阵列([product_id]=>2222[title]=>产品2[价格]=>66)[2] =>阵列([product_id]=>3333[title]=>产品3[价格]=>37.4)[3] =>阵列([product_id]=>4444[title]=>产品4[价格]=>10.5))
这将创建一个只有唯一product_id的数组,该数组只显示每个product_id:的最低价格
$products_lowestprices = [];
foreach ( $products AS &$product ) {
if ( isset( $products_lowestprices[ $product[ 'product_id' ] ] ) ) {
if ( $products_lowestprices[ $product[ 'product_id' ] ][ 'price' ] > $product[ 'price' ] ) {
$products_lowestprices[ $product[ 'product_id' ] ] = $product;
}
} else {
$products_lowestprices[ $product[ 'product_id' ] ] = $product;
}
}
$products_lowestprices = array_values( $products_lowestprices );