【问题标题】:php- find duplicate and sort by array property [closed]php-查找重复项并按数组属性排序[关闭]
【发布时间】:2018-03-30 15:31:16
【问题描述】:

我有大量相关的产品。我想检查是否有 重复 产品然后以 低价 获得产品。

我可以使用 array_uniquearray_count_values 来查找重复记录,但我不知道如何处理排序部分。

数组属性:

  • product_id(唯一)
  • 标题
  • 价格

样本数据

大批 ( [0] => 数组 ( [product_id] => 1111 [标题] => 产品 1 [价格] => 140 ) [1] => 数组 ( [product_id] => 2222 [标题] => 产品 2 [价格] => 66 ) [2] => 数组 ( [product_id] => 1111 [标题] => 产品 1 A [价格] => 123 ) [3] => 数组 ( [product_id] => 3333 [标题] => 产品 3 [价格] => 37.4 ) [4] => 数组 ( [product_id] => 4444 [标题] => 产品 4 [价格] => 10.5 ) )



产品1是重复的,所以对产品1会有一个记录,并且应该保留低价。

输出应该是这样的

大批 ( [0] => 数组 ( [product_id] => 1111 [标题] => 产品 1 [价格] => 123 ) [1] => 数组 ( [product_id] => 2222 [标题] => 产品 2 [价格] => 66 ) [2] => 数组 ( [product_id] => 3333 [标题] => 产品 3 [价格] => 37.4 ) [3] => 数组 ( [product_id] => 4444 [标题] => 产品 4 [价格] => 10.5 ) )

【问题讨论】:

  • 显示数组样本。
  • ^ 以及您尝试过的内容
  • 什么算作重复?你说product_id 是独一无二的。
  • @HtmHell product_id 应该是唯一的,我可以使用这个属性来检查产品是否重复。
  • @user3554045 删除重复项后,您要对数组进行排序吗?如果是,按什么值?

标签: php sorting large-data array-unique


【解决方案1】:

这将创建一个仅包含唯一 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 );

【讨论】:

  • @user3554045 很高兴我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2013-03-19
  • 2015-12-27
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 2012-07-06
  • 2017-08-01
相关资源
最近更新 更多