【问题标题】:Array and function in PHP [closed]PHP中的数组和函数[关闭]
【发布时间】:2012-12-04 11:46:45
【问题描述】:

我有这个代码:

<?php
function maxvalue() {
    $a=array(12,17,4,25,8);
    $temp=$a[0];
    for ($i=0; $i<=3; $i++) {
        if($temp<$a[$i+1]) {
            $temp=$a[$i+1]; 
        }
    }
    echo $temp."<br>";
}
maxvalue();
?>

此代码将显示最大数量 {25}。但我想显示中间的数字。我该怎么做?

【问题讨论】:

  • 如果它是一个最大值函数,为什么要在中间显示数字。
  • 中间的数字到底是什么意思?最大值的一半还是数字“4”?
  • 请不要使用平均值:它是模棱两可的...... MEAN、MEDIAN、MODE 更精确
  • @MarkBaker .. 我猜他正在寻找中位数
  • 我想显示数字 12,因为数字 4 较小,25 最大,但中间是 12 ..抱歉,我没有解释太多

标签: php arrays function


【解决方案1】:

使用

arsort为此,然后遍历数组count/2+1 item no,你会得到你的号码

【讨论】:

  • arsort 将不起作用。因为它将保持相同的键名。所以 12 会在中间,但它的键仍然是 0。所以 count/2+1 将是中间 ID(在这种情况下是 3,但应该是 2(基于 0 的索引)),但是如果你请求 $ar[ 3] 你会得到 key = 3 的 item,它仍然是 25
  • 我认为你做到了,只是没想到你会这么建议。使用大型数组会产生更多开销
【解决方案2】:

非动态方式

<?php
function maxvalue()
{
    $a = array(12,17,4,25,8);
    return $a[2];
}

echo maxvalue();
?>

动态方式

<?php
function maxvalue()
{
    $a = array(12,17,4,25,8);
    $middle = floor(count($a) / 2);
    return $a[$middle];
}

echo maxvalue();
?>

但是调用这个方法/函数 maxvalue 是不行的!

【讨论】:

    【解决方案3】:

    怎么样:

    $temp;
    $midvalue = $temp / 2;
    echo "Midvalue: " . $midvalue;
    

    【讨论】:

      【解决方案4】:

      取中间值:

      $a=array(12,17,4,25,8);
      
      function arMiddle($ar) {
          if (!is_array($ar)) {
              trigger_error("Not an array");
          }
      
          $c = count($ar);
      
          if ($c%2==0) {
              trigger_error("Equal number of records, no middle");
          }   
      
          $m = floor($c/2);
          sort($ar);
      
          return $ar[$m];
      }
      
      
      print arMiddle($a);
      

      输出将是 12。

      【讨论】:

        【解决方案5】:

        我猜你想要的是 Median 那么你可以使用:

        $a = array(12,17,4,25,8);
        rsort($a);
        echo $a[round(count($a) / 2) - 1];
        

        输出

         12 
        

        Live Demo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-08
          相关资源
          最近更新 更多