43 votes

Obtenir la valeur min et max dans PHP Array

J'ai un tableau comme celui-ci :

 
array (0 => 
  array (
    'id' => '20110209172713',
    'Date' => '2011-02-09',
    'Weight' => '200',
  ),
  1 => 
  array (
    'id' => '20110209172747',
    'Date' => '2011-02-09',
    'Weight' => '180',
  ),
  2 => 
  array (
    'id' => '20110209172827',
    'Date' => '2011-02-09',
    'Weight' => '175',
  ),
  3 => 
  array (
    'id' => '20110211204433',
    'Date' => '2011-02-11',
    'Weight' => '195',
  ),
)

J'ai besoin d'extraire les valeurs de poids minimales et maximales. Dans cet exemple

$min_value = 175

$valeur_max = 200

Une aide sur la façon de faire cela? Merci !

15voto

Crayon Violent Points 16544
foreach ($array as $k => $v) {
  $tArray[$k] = $v['Weight'];
}
$min_value = min($tArray);
$max_value = max($tArray);

11voto

RJD22 Points 6024

Pour les personnes utilisant PHP 5.5+, cela peut être fait beaucoup plus facilement avec array_column . Plus besoin de ces affreux array_maps.

Comment obtenir une valeur maximale :

 $highest_weight = max(array_column($details, 'Weight'));

Comment obtenir la valeur minimale

 $lowest_weight = min(array_column($details, 'Weight'));

6voto

rjha94 Points 1879

Il est intéressant de noter que les deux solutions ci-dessus utilisent un stockage supplémentaire sous forme de tableaux (le premier utilise deux d'entre eux et le second utilise un tableau), puis vous trouvez le minimum et le maximum en utilisant le tableau "stockage supplémentaire". Bien que cela puisse être acceptable dans le monde de la programmation réel (qui en donne un peu plus sur le stockage « supplémentaire » ?), Cela vous aurait donné un « C » dans la programmation 101.

Le problème de trouver le min et le max peut facilement être résolu avec seulement deux emplacements de mémoire supplémentaires

 $first = intval($input[0]['Weight']);
$min = $first ;
$max = $first ;

foreach($input as $data) {
    $weight = intval($data['Weight']);

    if($weight <= $min ) {
        $min =  $weight ;
    }

    if($weight > $max ) {
        $max =  $weight ;
    }

}

echo " min = $min and max = $max \n " ;

2voto

Sambhav Pandey Points 896

Et si vous n'utilisiez pas de fonction prédéfinie comme min ou max ?

 $arr = [4,5,6,7,8,2,9,1];
$val = $arr[0];
$n = count($arr);

for($i=1;$i<$n;$i++) {
if($val<$arr[$i]) {
    $val = $val;        
} else {
    $val = $arr[$i];
}
}
print($val);

?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X