web-dev-qa-db-ja.com

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

これを行う方法についてのヘルプはありますか?ありがとうございました !

34
Peter

オプション1.最初に、配列をマップしてそれらの番号を取得します(完全な詳細は取得しません)。

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

次に、最小値と最大値を取得します。

_$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_から始めます。

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

PHP 5.5+を使用している人にとっては、これは array_column でより簡単に行うことができます。

最大値を取得する方法:

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

最小値を取得する方法

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

上記の両方のソリューションが配列の形で追加のストレージを使用し(最初の1つは2つ、2つ目は1つの配列を使用)、「追加ストレージ」配列を使用してminとmaxを見つけることに注意してください。それは実際のプログラミングの世界では受け入れられるかもしれませんが(誰が「余分な」ストレージについて2ビットを提供しますか?)、プログラミング101で「C」が得られるでしょう。

最小値と最大値を見つける問題は、2つの追加メモリスロットで簡単に解決できます。

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

minmaxなどの定義済み関数を使用せずにどうですか?

$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 Pandey
$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
Pandit
<?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

phpで配列のソートを使用せずに、配列から5つの最大数と最小数を高速で出力します。

<?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