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

Php 如何从数组行中获取最小值,php,arrays,minimum,Php,Arrays,Minimum,我试图从列名称中包含“xx”的任何列中获取最小值 下面是我的代码: <?php $array = array( array( 'id' => 1, '10xx' => 14, '11xx' => 32, '12xx' => 4 ), array( 'id' => 2, '10xx' => 13, '11xx' => 36, '12xx' => 41 ) ); foreach($array a

我试图从列名称中包含“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";
}
?>

您已经为它提供了一个功能:


如果这更符合您的需要,请将其与数组_值结合使用。

只需使用min()函数,而不用在内部再次循环

$lowest_keys = array();

foreach($array as $item)
{
     unset( $item[ 'id' ] );
     $lowest_keys[] = min( $item );
}

$array=array(
排列(
“id”=>14,
“10xx”=>14,
“11xx”=>32,
“12xx”=>4
),
排列(
'id'=>2,
“10xx”=>13,
“11xx”=>36,
“12xx”=>41
)
);
$lowestKey='';
foreach($arra形式的数组){
foreach($arra as$key=>$value){
如果($key=='id'){
如果(($value<$lowestKey)| |($lowestKey==''){
$lowestKey=$value;
}
}
}
}
echo$lowestKey;
  • 使用
    foreach()循环或
    array\u walk()
    迭代每一行/子数组
  • 使用
    array\u shift()
    提取并显示
    id
    (第一个元素)值
  • 对相应子阵列中的剩余值调用
    min()
    ,以确定最低值
  • 没有条件表达式。没有不必要的变量。干净、简洁、有效

    代码:()

    输出:

    1 : 4
    2 : 13
    

    “但我不能”-为什么?输出结果是什么?另外,看一看,您忘记了
    id
    也在数组中,这将导致最低的键
    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);
    
    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);
    
    $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;
    
    $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