如何从数组行中获取最小值


How to get the minimum value from array row

我试图从任何列中获取最小值,列名中包含"xx"。

下面是我的代码:

<?php
$array = array(
 array(
  'id' => 1,
  '10xx' => 14,
  '11xx' => 32,
  '12xx' => 4
 ),
  array(
   'id' => 2,
  '10xx' => 13,
  '11xx' => 36,
  '12xx' => 41
 )
);

foreach($array as $item)
{
 $lowestKey = '';
 foreach($item as $key => $value)
 {

  if(strpos($key, 'xx') === 0)
  {
   if($lowestKey == '')
   {
    $lowestKey = $key;
   }
   else
   {
    if($value < $item[$lowestKey])
    {
     $lowestKey = $key;
    }
   }
  }
 }
 echo 'lowest for id ' . $item['id'] . ': ' . $item[$lowestKey] . "'n";
}
?>

你已经有一个函数了:

http://php.net/manual/en/function.min.php

echo min(2, 3, 1, 6, 7);  // 1
echo min(array(2, 4, 5)); // 2
echo min(0, 'hello');     // 0
echo min('hello', 0);     // hello
echo min('hello', -1);    // -1

如果这更适合您的需求,请将其与array_values结合起来。

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

$numbers = array_map(function($array) {
  return $array['id'];
}, $array);
echo $min = min($numbers);
echo $max = max($numbers);
function find_lowest($array){
        $new_array = array();
        foreach($array  as $key => $val ){
            if(is_array($val)){
                $new_array[$key] = find_lowest($val);
            }else{
                $new_array[$key] =  $val ;
            }
        }
        return min($new_array);
    }
    $array = array( array(  'id' => 1,
  '10xx' => 14,
  '11xx' => 32,
  '12xx' => 4
 ),
  array(
   'id' => 2,
  '10xx' => 13,
  '11xx' => 36,
  '12xx' => 41
 )
);
 echo find_lowest($array);

与其在内部再次循环,只需使用 min(( 函数即可。

$lowest_keys = array();
foreach($array as $item)
{
     unset( $item[ 'id' ] );
     $lowest_keys[] = min( $item );
}
  1. 使用 foreach() 循环或array_walk()迭代每个行/子数组。
  2. 提取并显示带有array_shift()id(第一个元素(值。
  3. 对相应子数组中的剩余值调用min()以确定最低值。

没有条件表达式。没有不必要的变量。 干净、简洁、有效。

代码:(演示(

$array = [
    ['id' => 1, '10xx' => 14, '11xx' => 32, '12xx' => 4],
    ['id' => 2, '10xx' => 13, '11xx' => 36, '12xx' => 41]
];
array_walk($array, function($row) {
    echo array_shift($row) , " : " , min($row) , "'n";
});

输出:

1 : 4
2 : 13
$array = array(
         array(
          'id' => 14,
          '10xx' => 14,
          '11xx' => 32,
          '12xx' => 4
         ),
          array(
           'id' => 2,
          '10xx' => 13,
          '11xx' => 36,
          '12xx' => 41
          )
        );
    $lowestKey = '';
    foreach($array as $arra){
        foreach ($arra as $key=>$value){
            if ($key == 'id'){
                if(($value < $lowestKey )||( $lowestKey== '')){
                $lowestKey = $value;
                }
            }

        }
    }
   echo $lowestKey;