Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取PHP数组中的最小值和最大值_Php_Arrays_Extract - Fatal编程技术网

获取PHP数组中的最小值和最大值

获取PHP数组中的最小值和最大值,php,arrays,extract,Php,Arrays,Extract,我有这样一个数组: array (0 => array ( 'id' => '20110209172713', 'Date' => '2011-02-09', 'Weight' => '200', ), 1 => array ( 'id' => '20110209172747', 'Date' => '2011-02-09', 'Weight' => '180', ), 2 => array ( 'id'

我有这样一个数组:


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_值=175

$max_值=200

有关于如何做的帮助吗?
谢谢大家!

选项1。首先映射数组以获取这些数字(而不是全部细节):

foreach ($array as $k => $v) {
  $tArray[$k] = $v['Weight'];
}
$min_value = min($tArray);
$max_value = max($tArray);
然后得到最小值和最大值:

$min = min($numbers);
$max = max($numbers);
选项2。(仅当您没有PHP5.5或更高版本时)与选项1相同,但要提取值,请使用
array\u map

$numbers = array_map(function($details) {
  return $details['Weight'];
}, $array);
备选案文3

选项4。如果只需要最小值或最大值,
array\u reduce()
可能会更快:

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

这会产生更多的
min()
s,但速度非常快。
PHP_INT_MAX
是从高开始,然后越来越低。您可以对
$max
执行相同的操作,但是您可以从
0
-PHP\u INT\u max

开始,有趣的是,上面两种解决方案都使用数组形式的额外存储(前一个两个,第二个使用一个数组),然后使用“额外存储”数组查找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 " ;
$first=intval($input[0]['Weight']);
$min=$first;
$max=$first;
foreach($作为$data输入){
$weight=intval($data['weight']);
如果($weight$max){
$max=$weight;
}
}
echo“min=$min和max=$max\n”;

对于使用PHP5.5+的人来说,使用PHP可以更轻松地完成这项工作。不再需要那些丑陋的数组映射了

如何获得最大值:

$highest_weight = max(array_column($details, 'Weight'));
如何获取最小值

$lowest_weight = min(array_column($details, 'Weight'));
$Location_Category_array=数组(5,50,7,6,1,7,30,50,50,40,50,9,9,11,2,2,2,2,2,11,21,1,12,1,5);
asort($Location\u Category\u array);
$count=数组\计数\值($Location\类别\数组)//对数组中的值进行计数,返回Associative数组
打印(计数);
$maxsize=0;
$maxvalue=0;
foreach($a=>y){
回声“
.”$a.“=”$y; 如果($y>=$maxvalue){ $maxvalue=$y; 如果($a>$maxsize){ $maxsize=$a; } } } echo“
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);
$arr=[4,5,6,7,8,2,9,1];
$val=$arr[0];
$n=计数($arr);

对于($i=1;$i快速打印数组中的五个最大值和最小值,而不使用php中的排序数组 :-



我开始认为PHP需要一个新的位置运算符,它包含了最近关于“直接”访问二维数组索引的所有问题……
array\u pull
array\u column
已经被提出来了(就像7年前一样)。我不期望很快会有类似的结果。选项1和3似乎完全相同?@Pang你是对的。它们并不总是相同的,但现在是。你可能想用
if($weight>$max){
替换
if($weight>=$max){
,以确保
$max
始终具有
$weight
$highest_weight = max(array_column($details, 'Weight'));
$lowest_weight = min(array_column($details, 'Weight'));
$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;
$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  

$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; 
}
?>