Получите минимальное и максимальное значение в PHP-массиве

У меня такой массив:

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

Мне нужно извлечь минимальные и максимальные значения веса. В этом примере

$ min_value = 175

$ max_value = 200

Любая помощь в том, как это сделать? Спасибо !

Вариант 1. Сначала вы сопоставляете массив, чтобы получить эти числа (а не полную информацию):

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

Затем вы получаете min и max:

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

Вариант 2. (Только если у вас нет PHP 5.5.) То же, что и в варианте 1, но чтобы вырвать значения, используйте array_map :

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

Вариант 3.

Вариант 4. Если вам нужен только min OR max, array_reduce() может быть быстрее:

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

Это делает больше min() s, но они очень быстрые. PHP_INT_MAX должен начинаться с максимума и становиться ниже и ниже. Вы можете сделать то же самое для $max , но вы начнете с 0 или -PHP_INT_MAX .

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

Для людей, использующих PHP 5.5+, это может быть сделано намного проще с помощью array_column . Не нужно для этих уродливых массивов.

Как получить максимальное значение:

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

Как получить минимальное значение

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

Интересно отметить, что оба вышеупомянутых решения используют дополнительное хранилище в виде массивов (сначала один из них, а второй – один массив), а затем вы находите min и max, используя массив «дополнительного хранения». Хотя это может быть приемлемым в реальном мире программирования (кто дает два бит о «дополнительном» хранилище?), Он получил бы вас «C» в программировании 101.

Проблема поиска min и max может быть легко решена только двумя дополнительными слотами памяти

 $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 " ; 
 $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); 
 <?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/>"; ?> 
 $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; 

Как насчет без использования предопределенной функции, такой как min или 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); 

?>

быстро печатать пять максимальных и минимальных чисел из массива без использования сортировочного массива в 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; } ?>