搜尋

首頁  >  問答  >  主體

php 計算數組最大最小值 大神進

#這樣的陣列 如何 計算出 最大值 最小值

一眼可以看出最小值是 0 最大值是 459 但是怎麼 用php算出來尼

怪我咯怪我咯2789 天前860

全部回覆(6)我來回復

  • 高洛峰

    高洛峰2017-05-18 10:48:03

    1.轉換成一維數組,分別用min和max求最小和最大

    function getMaxAndMin($items){
        $newItems=[];
        $cutStr=',';//要分割的字符
        foreach($items as $item)
        {
        //保证是String并且包含','
          if(is_string($item) && strpos($item,$cutStr)!==false)
          {
            list($t1,$t2)=explode(',',$item)
            $newItems[]=$t1;
            $newItems[]=$t2;
           }else{
               $newItems[]=$item;
           }
        }
        return [min($newItems),max($newItems)];
    }
    $exampleArr=[
    '0,129',
    '130,249',
    '250,459'
    ];
    list($min,$max)=getMaxAndMin($exampleArr);

    補充一個樓下的方案,更簡單
    @jacoob_w

    function getMaxAndMin($items,$operator=',')
    {
        $data = explode($operator, join($operator,$data));
        return [min($data),max($data)];
    }

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-18 10:48:03

    雷雷

    回覆
    0
  • 仅有的幸福

    仅有的幸福2017-05-18 10:48:03

    1.你可以手動去實作演算法,不過效能可想而知
    2.建議使用PHP內建函數:http://php.net/manual/zh/func...

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-18 10:48:03

    $arr = array(
        '0,129',
        '130,249',
        '250,459',
    );
    $mix = intval($arr[0]);
    $max = explode(',', end($arr))[1];

    結合實際情況使用
    因為見到題主還有其他的問題,認定他的數據結構就是這樣,大小從上至下增加

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-18 10:48:03

    這麼快就採納答案了,個人覺得採納的不是最優方案呀。

    $data = array(
        '0,129',
        '130,249',
        '380,22'
    );
    
    $dataArr = explode(',', join(',',$data));
    echo "max:".max($dataArr)."<br/>";
    echo "min:".min($dataArr);

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-18 10:48:03

    雷雷

    回覆
    0
  • 取消回覆