У меня такой массив:
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; } ?>