2017-10-18 8 views
0

J'ai un large éventail associatif de produits. je veux vérifier s'il y a dupliquer produits puis obtenir le produit avec bas prix.php- recherche de doublons et tri par propriété de tableau

Je peux utiliser array_unique et array_count_values ​​ pour trouver les doublons, mais je ne sais pas comment gérer une partie de tri.

propriétés tableau:

  • Product_ID (unique)
  • titre
  • prix

de données échantillons

 

Array 
(
    [0] => Array 
     (
      [product_id] => 1111 
      [title] => Product 1 
      [price] => 140 
     ) 

    [1] => Array 
     (
      [product_id] => 2222 
      [title] => Product 2 
      [price] => 66 
     ) 

    [2] => Array 
     (
      [product_id] => 1111 
      [title] => Product 1 A 
      [price] => 123 
     ) 

    [3] => Array 
     (
      [product_id] => 3333 
      [title] => Product 3 
      [price] => 37.4 
     ) 

    [4] => Array 
     (
      [product_id] => 4444 
      [title] => Product 4 
      [price] => 10.5 
     ) 

) 

Le produit 1 est dupliqué, donc il y aura un enregistrement contre le produit 1 et avec un prix bas, il faut garder le produit 1.

sortie devrait être comme

 

Array 
(
    [0] => Array 
     (
      [product_id] => 1111 
      [title] => Product 1 
      [price] => 123 
     ) 

    [1] => Array 
     (
      [product_id] => 2222 
      [title] => Product 2 
      [price] => 66 
     ) 

    [2] => Array 
     (
      [product_id] => 3333 
      [title] => Product 3 
      [price] => 37.4 
     ) 

    [3] => Array 
     (
      [product_id] => 4444 
      [title] => Product 4 
      [price] => 10.5 
     ) 

) 

+2

Afficher un échantillon du tableau. – AbraCadaver

+0

^et ce que vous avez essayé –

+0

Qu'est-ce qui compte comme doublon? Vous avez dit 'product_id' est unique. – HtmHell

Répondre

0

Cela va créer un tableau qui ne dispose que de product_id unique, montrant que le prix le plus bas pour chaque 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); 
+0

@ user3554045 heureux d'avoir pu aider! –