0

Comment puis-je supprimer les valeurs dupliquées de la date clé et de la valeur clé avec une valeur inférieure?Supprime les valeurs en double d'un tableau de valeur inférieure

tableau Exemple:

Array(

[0] => Array 
(
    [date] => 6.9. 
    [value] => 0 
) 

[1] => Array 
(
    [date] => 6.9. 
    [value] => 5 
)) 

et la sortie devrait ressembler à ceci:

Array(

[1] => Array 
(
    [date] => 6.9. 
    [value] => 5 
)) 
+0

double possible de [Comment supprimer des doublons d'un tableau en PHP] (http://stackoverflow.com/questions/307650/how -to-remove-duplicate-values-from-an-array-in-php) – syck

Répondre

0

Je pense que cela va fonctionner :)

$array = [...]; 
$max_values = []; 
foreach($array as $row) { 
    if(!isset($max_values[$row['date']])) { 
     $max_values[$row['date']] = $row['value']; 
    } 
    if($max_values[$row['date']] < $row['value']) { 
     $max_values[$row['date']] = $row['value']; 
    } 
} 

$filtered_array = array_filter($array, function($value) use ($max_values) { 
     return $max_values[$value['date']] <= $value['value']; 
    } 
); 
+0

Cela a plutôt bien fonctionné. Je vous remercie. –

0
$array = new array(); //your data here 

Vous devez créer un fonction pour construire le tableau unique que vous voulez

function max_array_unique($array) { 
    $hash = new array(); 
    foreach($array as $row) { 
     if (array_key_exist($hash, $row['date']) { 
      if ($row['date'] > $hash[row['date']]) { 
       $hash[$row['date']] = $row['value']; 
      } 
     } else { 
      $hash[$row['date']] = $row['value']; 
     } 
    } 
    $result = new array(); 
    foreach($hash as $key => $value) { 
     $result[] = array(
      'date' => $key, 
      'value' => $value, 
     ); 
    } 
return $result; 
} 

Il vous suffit d'appeler la fonction

max_array_unique($array);