it-swarm.com.de

Holen Sie sich min und max Wert in PHP Array

Ich habe ein Array wie dieses:


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',
  ),
)

Ich muss minimale und maximale Gewichtswerte ermitteln. In diesem Beispiel 

$ min_value = 175

$ max_value = 200

Irgendwelche Hilfe, wie man das macht? Vielen Dank!

34
Peter

Option 1. Zuerst ordnen Sie das Array zu, um diese Zahlen zu erhalten (und nicht die vollständigen Details):

$numbers = array_column($array, 'weight')

Dann bekommst du die Min und Max:

$min = min($numbers);
$max = max($numbers);

Option 2. (Nur wenn Sie nicht über PHP 5.5.) Verfügen. Dasselbe wie Option 1, aber zum Erfassen der Werte verwenden Sie array_map:

$numbers = array_map(function($details) {
  return $details['Weight'];
}, $array);

Option 3.

Option 4. Wenn Sie nur ein Maximum von OR benötigen, ist array_reduce() möglicherweise schneller:

$min = array_reduce($array, function($min, $details) {
  return min($min, $details['weight']);
}, PHP_INT_MAX);

Das macht mehr min()s, aber sie sind sehr schnell. Der PHP_INT_MAX soll mit einem Hoch beginnen und tiefer und tiefer gehen. Sie könnten dasselbe für $max tun, aber Sie würden mit 0 oder -PHP_INT_MAX beginnen.

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

Für Benutzer, die PHP 5.5+ verwenden, ist dies mit array_column viel einfacher. Diese hässlichen array_maps brauchen nicht mehr.

So erhalten Sie einen Maximalwert:

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

Wie erhalte ich den minimalen Wert?

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

Es ist interessant zu bemerken, dass beide der obigen Lösungen zusätzlichen Speicher in Form von Arrays verwenden (zuerst zwei, und die zweite verwendet ein Array), und dann finden Sie min und max mithilfe des Arrays "extra storage". Während dies in der realen Programmierwelt akzeptabel sein kann (wer gibt zwei zusätzliche Informationen zu "zusätzlicher" Speicherung?), Hätte es Ihnen bei der Programmierung 101 ein "C" beschert.

Das Problem, min und max zu finden, kann einfach mit zwei zusätzlichen Speichersteckplätzen gelöst werden 

$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 " ;
3
rjha94

Wie wäre es ohne die Verwendung einer vordefinierten Funktion wie min oder 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);

?>

0
Sambhav
$Location_Category_array = array(5,50,7,6,1,7,7,30,50,50,50,40,50,9,9,11,2,2,2,2,2,11,21,21,1,12,1,5);

asort($Location_Category_array);
$count=array_count_values($Location_Category_array);//Counts the values in the array, returns associatve array
        print_r($count);
        $maxsize = 0;
        $maxvalue = 0;
        foreach($count as $a=>$y){
            echo "<br/>".$a."=".$y;
            if($y>=$maxvalue){
                $maxvalue = $y;
                if($a>$maxsize){
                    $maxsize = $a;
                }
            }
        }

    echo "<br/>max = ".$maxsize;
0
rattanKunwar
<?php 
$array = 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',
  ),
);

foreach ($array as $key => $value) {
  $result[$key] = $value['Weight'];
}
$min = min($result);
$max = max($result);

echo " The array in Minnumum number :".$min."<br/>";
echo " The array in Maximum  number :".$max."<br/>";
?> 
0
Hanifeoglu

schnell fünf maximale und minimale Anzahl von Feldern ohne Verwendung von Sortierfeld in php:-

<?php  

$array = explode(',',"78, 60, 62, 68, 71, 68, 73, 85, 66, 64, 76, 63, 81, 76, 73,  
68, 72, 73, 75, 65, 74, 63, 67, 65, 64, 68, 73, 75, 79, 73");  
$t=0;  
$l=count($array);  
foreach($array as $v)  
{  
 $t += $v;  
}  
 $avg= $t/$l;  
 echo "average Temperature is : ".$avg."  ";   


echo "<br>List of seven highest temperatsures :-"; 
$m[0]= max($array); 
for($i=1; $i <7 ; $i++)
{ 
$m[$i]=max(array_diff($array,$m));
}
foreach ($m as $key => $value) {
    echo "  ".$value; 
}
echo "<br> List of seven lowest temperatures : ";
$mi[0]= min($array); 
for($i=1; $i <7 ; $i++)
{ 
$mi[$i]=min(array_diff($array,$mi));
}

foreach ($mi as $key => $value) {
    echo "  ".$value; 
}
?>  
0
dhavaloza
$num = 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'));

    foreach($num as $key => $val)   
    {                       
        $weight[] = $val['Weight'];
    }

     echo max($weight);
     echo min($weight);
0
Bhanwar