php-查找重复项并按数组属性排序



我有一个大型的产品关联数组。我想检查是否有重复的产品,然后获得低价的产品。

我可以使用array_uniquearray_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 );

相关内容

  • 没有找到相关文章

最新更新