Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从多维数组中获取最大值_Php_Multidimensional Array_Max_Array Algorithms - Fatal编程技术网

Php 从多维数组中获取最大值

Php 从多维数组中获取最大值,php,multidimensional-array,max,array-algorithms,Php,Multidimensional Array,Max,Array Algorithms,这是我的多维数组: $arrOrg = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78]; 我想从这个数组中获得最大值 以下是我迄今为止所尝试的: $highest = 0; function getHighest($arr) { for ($i = 0; $i < count($arr); $i++) { if (is_array($arr[$i])) { getHighest($arr[$i]);

这是我的多维数组:

$arrOrg = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
我想从这个数组中获得最大值

以下是我迄今为止所尝试的:

$highest = 0;
function getHighest($arr) {
    for ($i = 0; $i < count($arr); $i++) {
        if (is_array($arr[$i])) {
            getHighest($arr[$i]);
        } else {
            if ($arr[$i] > $arr[$i + 1]) {
                $highest = $arr[$i];
            } else {
                $highest = $arr[$i + 1];
            }
        }
    }
    return $highest;
}
echo getHighest($arrOrg);
$highest=0;
函数getHighest($arr){
对于($i=0;$i$arr[$i+1]){
$highest=$arr[$i];
}否则{
$highest=$arr[$i+1];
}
}
}
返回$high;
}
回音最高($arrog);
但它给出了一个错误的结果:
78


你能帮帮我吗?

也许是这样的:

$arrOrg = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
$json   = json_encode($arrOrg);
$json   = str_replace(array('[', ']'), "", $json);
$arr    = explode(",", $json);

echo $maximum = max($arr);
在Vahe Galstyan评论后编辑

$arrOrg = array(
    2, 
    3,
    array(5, 7, 1), 
    100,
    array(
        6, 
        9, 
        array(14, 95)
    ), 
    78
);

$json = json_encode($arrOrg);
$json = str_replace(array('[', ']'), "", $json);
$arr  = explode(",", $json);

echo $maximum = max($arr);

你可以用这个函数来做这个

  function getHighest($array) {
       foreach($array as $key => $value) {
           if (is_array($value)) {
               $array[$key] = getHighest($value);
           }
       }

       sort($array);

       return array_pop($array);
    }

    echo getHighest($arrOrg);

您可以使用此方法进行此操作

<?php

$array = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
$highest_value=0;
get_highest_value($array);
function get_highest_value($array){
    foreach($array as $val){
        if(is_array($val)){
            get_highest_value($val);
        }else{
            if($GLOBALS['highest_value'] < $val){
                $GLOBALS['highest_value'] = $val;
            }
        }
    }
}
echo $highest_value; // output 100

不带全局变量,修改数组或进行额外转换:

funcion getMax ($arr) {
    $max = null;
    foreach ($arr as $act) {
        if (is_array ($act)) {
            $act = getMax ($act);
        }
        if ($max == null || act > $max) {
            $max = $act;
        }
    }
    return $max;
}

我认为将数组转换为json。。。删除“[”和“]”,然后将字符串重新转换为数组不是查找最大值的算法。无论如何。。。在php中它可以工作。没有几行。我认为这是一个非常好的解决办法

但是我想用这个代码来回答这个问题

$highest = null;

array_walk_recursive($arrOrg, function($item, $key) use (&$highest) {
    if (!isset($highest) || $highest < $item) {
        $highest = $item;
    }
});

echo $highest;
$highest=null;
数组\u walk\u递归($arrog,函数($item,$key)使用(&$highest){
如果(!isset($highest)|$highest<$item){
$highest=$item;
}
});
echo美元最高;

您也可以通过如下所示的数组\u walk\u recursive()和max()来实现它。请检查此处的输出


电流输出是多少?我得到78。最后一个是输出,如果数组是这样的呢$arrOrg=[2,3,数组(5,7,1),100,6,9,14,95],78];哦,好的)我误解了一些事情)不用担心,这是一个很好的解决方案@VaheGalstyan:PHP是一种非常有趣的语言,因为这些东西有点不对劲,但是如果它是一个由所有负数组成的数组呢?谢谢你的问题。@BikashP Sumit目前接受的答案是一种黑客的解决方法,如果数组中有一个键值高于所有其他值,它可能会失败。因此,这个答案是最简洁、聪明、健壮的解决方案,只有两个函数,没有条件。(+1)在Sumit的意愿下,看着它不破裂:
<?php
   $arrOrg = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
   $oneD = array();
   array_walk_recursive($arrOrg,function ($a) use (&$oneD){
        $oneD[] = $a;

   });
   echo "Maximum value = ".max($oneD);